Monday, March 06, 2006
What and Where's that Glyph?
You receive a file from a client and some of the characters have the "dreaded pinkness" indicating that a glyph has been used that isn't present in the font you're using. Other characters in the same font do not show the dreaded pinkness, so this is not a case of a missing font but rather a missing glyph issue.
So, how do you find out which glyph it is supposed to be? I used this process:
1. I selected the glyph in my InDesign document.
2. I opened the Info palette.
And that told me that the missing glyph was unicode value 25CF.
To find out what it is supposed to look like, I visited: http://www.unicode.org/charts/ and typed the unicode value into the search.
To find out if any of my fonts had this glyph present, I wrote this quick and dirty script. It relies on the fact that if a glyph is not populated in a particular font and you try to convert it to outlines, you get an error:
I'll come back to this script one day and improve it.
So, how do you find out which glyph it is supposed to be? I used this process:
1. I selected the glyph in my InDesign document.
2. I opened the Info palette.
And that told me that the missing glyph was unicode value 25CF.
To find out what it is supposed to look like, I visited: http://www.unicode.org/charts/ and typed the unicode value into the search.
To find out if any of my fonts had this glyph present, I wrote this quick and dirty script. It relies on the fact that if a glyph is not populated in a particular font and you try to convert it to outlines, you get an error:
//DESCRIPTION: Seek out Fonts with code point populatedWere the glyph to be present in any significant number of fonts, using an alert to inform the user is not a good idea, but in my case none of the 1140 fonts had the glyph so the alert was tolerable.
codePoint = "\u25CF";
myFonts = app.fonts;
codePresentList = [];
for (j = 0; myFonts.length > j; j++) {
myDoc = app.documents.add();
myFrame = myDoc.pages[0].textFrames.add();
myFrame.geometricBounds = myDoc.pages[0].bounds;
myFrame.insertionPoints[0].contents = codePoint;
try {
myFrame.parentStory.characters[0].createOutlines();
codePresentList.push(myFonts[j].name);
} catch (e) {
// Glyph not present, ignore
}
myDoc.close(SaveOptions.no);
}
alert ("Code present in:\r" + codePresentList.join("\r"));
I'll come back to this script one day and improve it.
Comments:
<< Home
It has been pointed out to me by Steve Werner that this information is readily available on the OS X Character palette. I believe that Windows has a similar palette although I'm not sure if it provides this particular informaton.
Post a Comment
<< Home