1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
|
<HTML>
<HEAD>
<!-- Created with AOLpress/2.0 -->
<!-- AP: Created on: 11-Feb-2002 -->
<!-- AP: Last modified: 24-Feb-2002 -->
<TITLE>Building Accented and other Composit Characters</TITLE>
</HEAD>
<BODY>
<H1 ALIGN=Center>
Building Accented and other Composite Characters
</H1>
<P>
You can use the Element->Build Accented Char command to build up accented
characters (and some other composites). Or you can hold down the shift key
when invoking the menu and build slightly more general composite characters.
The accented version will not create ligatures and will not replace Alpha
with A. The composite version will do both these things. My assumption is
that ligatures (like the "fi" ligature) usually need a bit of work on the
user's part to get them to look good, in the case of "fi" the dot on the
"i" needs to be fused into the hook of the "f", and if you are careless with
the command you might destroy your work inadvertently.
<P>
What can be built?
<UL>
<LI>
Unicode specifies various normative character decompositions. So "Aacute"
is defined to be an "A" with an "acute" accent centered on top. Any of these
can be built (though if the character contains no accents it will need to
be built with the build composite command).<BR>
Sometimes Unicode's normative definition is not as informative as it might
be (many of the greek accents are "unified" with latin accents that they
don't really look like, the result is that following Unicode slavishly will
yield the wrong character). So in some cases PfaEdit will use a slightly
different set of characters than the normative decomposition.<BR>
This includes:
<UL>
<LI>
Latin accented characters
<LI>
Latin ligatures (ae, oe, fi, fl, etc)
<LI>
Greek accented characters
<LI>
Cyrillic accented characters
<LI>
Hebrew ligatures
<LI>
Arabic ligatures
<LI>
Fractions, digits inside parens, roman numerals, etc.
<LI>
The predefined Hangul characters (0xac00-0xdfaf)
</UL>
<LI>
Many of the Korean Jamo are actually ligatures of other Jamo (ssangkiyoeok
(0x1101) is composed of two kiyoeok (0x1100)). For some reason this information
is not normative unicode, but PfaEdit is aware of it anyway and will build
those characters if you ask it to.
<LI>
The characters "i" and "j" can be built by adding a dot accent to the dotlessi
and dotlessj characters
<LI>
The dotlessi and dotlessj characters can be built by removing the dot from
an "i" or "j" character
<LI>
PfaEdit knows a few other things. It knows that Greek "Alpha" and Cyrillic
A both look like the Latin "A" and will replace either if you ask. (as well
as all the other similar characters in latin, greek, cyrillic, cherockee,
etc.)
<LI>
Some characters are just extremely simple to build. There are a whole slew
of characters which correspond to zero-width spaces. PfaEdit will build any
of them. More usefully it will build any of the fixed size spaces 0x2000-0x200f,
and the fixed sized rules 0x2010-0x2015).
<LI>
You may use the Element->Char Info dialog to define a ligature yourself,
and PfaEdit will build it for you.
<LI>
In Adobe's CID character sets there are some pre-rotated versions of latin,
greek and cyrillic characters. When CJK text is written vertically the convention
is that any text in western alphabets should be displayed rotated 90º
clockwise. If you apply Build Accented Character to one of these slots it
will find the appropriate latin letter and rotate it properly.<BR>
If a character's name is "vertcid_<cid>" where <cid> is a decimal
number, then it is assumed to be a vertically rotated version of the glyph
at <cid>. In non-cid-keyed fonts, if a character's name is
"vertuni<uni>" where <uni> is a four digit hex number, then it
is assumed to be a vertically rotated version of that unicode character.
</UL>
<P>
So for each selected character in the font view (or for the current character
in the outline view), and if all the base characters and accents needed by
the character have already been created then this command will delete anything
that is currently in the foreground and put a reference to the base character
and another reference to the accent character into the foreground. So if
the current character were "À" then a reference to "A" would be added
to it, and a reference to "`" would be centered above the "A". <BR>
If <A HREF="editmenu.html#From">Copy From</A> is set to All Fonts then any
bitmaps will have a similar process done (even in the outline character view).
<P>
Choosing accents can be a slightly tricky process. Unicode says that accented
letters should be built out of the accents in the range 0x300-0x340, but
this does not work too well in postscript. A Type1 font works better if the
accented character is in the Adobe Standard Encoding, which means either
using accents around 0x2d0 or ascii characters. Pfaedit will first attempt
to find an accent around 0x2d0, then in ascii and finally in the 0x300-0x340
range.
<P>
Not all accents should be centered above the base character, a cedilla is
(usually) centered underneath the base, while other accents need to be placed
to the left or right, or even overstruck. PfaEdit should know about proper
placement of most accents (or at least a rough approximation thereto).
<P>
Some Unicode characters contain more than one accent. Additional accents
will be treated similarly. This command can also be used to generate more
general composite characters .
<P>
Some accents (for example cedilla) are treated unexpectedly on certain letters
(different ways in different languages), so be careful of g-cedilla. Å
often merges the ring into the top of the A, but here it will float above
it. <FONT COLOR="Red"><STRONG>Be alert</STRONG></FONT>.
<P>
Placing an accent above a character is surprisingly tricky. Centered accents
(like grave, acute, etc.) should not really be placed in the exact center
of the character. For instance when placing an acute accent on top of an
"a" the accent should actually go above the highest part of the "a" which
is almost but not quite in the center of the character. And when placing
an acute on top of a "k" (a rare combination, but still used) the accent
is centered on the stem of the "k". Greek accents are even more baroque.
PfaEdit knows many oddities of accent placement, but it will never know all
of them (some letters have multiple forms depending on the font, or perhaps
on the humidity and phase of the moon).
<TABLE BORDER CELLPADDING="2" ALIGN=Center>
<TR>
<TD><P ALIGN=Center>
<IMG SRC="acenter.png" WIDTH="208" HEIGHT="281"><BR>
Center point of the glyph</TD>
<TD><P ALIGN=Center>
<IMG SRC="ahighest.png" WIDTH="208" HEIGHT="281"><BR>
Highest point of the glyph</TD>
</TR>
</TABLE>
<P>
And how accents are centered depends on the accents themselves. Usually PfaEdit
will try to center an accent so that the accent's center is over the base
character's "center". But that doesn't always work either. The grave and
acute accents are usually (but not always) centered only on the bottom part
of the glyph.
<TABLE BORDER CELLPADDING="2" ALIGN=Center>
<TR>
<TD><P ALIGN=Center>
<IMG SRC="aacutemid.png" WIDTH="131" HEIGHT="228"><BR>
Midpoint of accent</TD>
<TD><P ALIGN=Center>
<IMG SRC="aacutebase.png" WIDTH="132" HEIGHT="225"><BR>
Centered on base of accent</TD>
</TR>
</TABLE>
<P>
PfaEdit gives you a minuscule amount of control over where it puts accents.
There are two preference items you can set (File->Preferences)
<UL>
<LI>
AccentOffsetPercent -- This allows you to control the amount of space between
the top of the letter and the bottom of the accent (or the bottom of the
letter and the top of the accent for accents that sink under their letters).
This is expressed as a percentage of the em size and defaults to 6%. (In
some cases there will be a little bit more space above the accent than that.
All the accents from all the lower case letters should be at the same height,
but the letter "o" is usually slightly higher than the letter "u". So all
the lower case accents will be placed at the appropriate height for "o",
even those over "u". A similar trick is done for upper case letters).
<LI>
AcuteCenterBottom -- This controls whether acute and grave (and double accute
and grave) accents are centered on the entire glyph, or just on the bottom.
</UL>
<P>
<FONT COLOR="Red"><STRONG><SMALL>NOTE:</SMALL></STRONG></FONT> So PfaEdit
is going to do something wrong. There are just too many areas where I am
ignorant or my taste doesn't match yours or the program has a bug. I strongly
recommend that you examine all your accented characters after building them
and be prepared to adjust things.
<P>
The algorithms take some account of the italicangle, but when working on
an italic (or oblique) font PfaEdit is even more likely to do something you
don't like.
<P>
<P ALIGN=Center>
-- <A HREF="elementmenu.html">Element Menu</A> --
<A HREF="overview.html">TOC</A> -- <A HREF="editexample.html">Tutorial</A>
--
</BODY></HTML>
|