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 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
|
<HTML>
<HEAD>
<!-- Created with AOLpress/2.0 -->
<!-- AP: Created on: 27-Jan-2003 -->
<!-- AP: Last modified: 30-Nov-2006 -->
<TITLE>Special thoughts for special scripts</TITLE>
<LINK REL="icon" href="fftype16.png">
<LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
</HEAD>
<BODY>
<DIV id="in">
<H1 ALIGN=Center>
Special thoughts for special scripts
</H1>
<UL>
<LI>
<A HREF="editexample.html#FontCreate">Font Creation</A>
<LI>
<A HREF="editexample.html#CharCreate">Creating a glyph (tracing outlines)</A>
<LI>
<A HREF="editexample2.html#Navigating">Navigating to other glyphs</A>
<LI>
<A HREF="editexample2.html#Creating-o">On to the next glyph (consistent
directions)</A>
<LI>
<A HREF="editexample3.html#consistent-stems">Consistent serifs and stem
widths</A>
<LI>
<A HREF="editexample4.html#accents">Building accented glyphs</A>
<LI>
<A HREF="editexample4.html#ligature">Building a ligature</A>
<LI>
<A HREF="editexample5.html#metrics">Examining metrics</A>
<LI>
<A HREF="editexample5.html#Kerning">Kerning</A>
<LI>
<A HREF="editexample6.html#Variants">Glyph variants</A>
<LI>
<A HREF="editexample6.html#Marks">Anchoring marks</A>
<LI>
<A HREF="editexample7.html#checking">Checking your font</A>
<LI>
<A HREF="editexample7.html#generating">Generating it</A>
<LI>
<A HREF="editexample7.html#Families">Font Families</A>
<LI>
<A HREF="editexample7.html#summary">Final Summary</A>
<LI>
<A HREF="scriptnotes.html#Special">Notes on various scripts</A>
</UL>
<H2>
<A NAME="Special">Special </A>thoughts for special scripts
</H2>
<P>
<A HREF="http://www.microsoft.com/typography/specs/default.htm">Microsoft</A>
provides some information on what (opentype) features a word processor should
support by default for certain scripts.
<P>
<FONT COLOR="Red"><STRONG><BIG>Caveat:</BIG></STRONG></FONT> Just because
a feature is documented and looks useful does not mean Uniscribe will use
it for your script. Many Latin script fonts would like to use 'init', 'medi',
'calt', etc. but none of these features is turned on by Uniscribe for Latin.
<P>
<FONT COLOR="Red"><STRONG><BIG>Caveat:</BIG></STRONG></FONT> Just because
Uniscribe supports a feature that does not mean any given application will.
Uniscribe (as of 2005) supports 'liga' for latin, but neither Word nor Office
does.
<P>
<FONT COLOR="Red"><STRONG><BIG>Caveat:</BIG></STRONG></FONT> Uniscribe (MS
unicode text layout routines) may ignore either the GPOS or the GSUB table
depending on the script, and may even refuse to use the font at all if it
doesn't have the right stuff in GPOS/GSUB. A Hebrew font must have both a
GPOS and a GSUB. If it doesn't the font is not used. A latin font need not
have either, but if it doesn't have GSUB then GPOS won't be used. So now
if one table is present and the other isn't, FontForge will generate a dummy
version of the other.
<H3>
Common
</H3>
<P>
Many characters are used in more than one script. The digits, marks of
punctuation, etc. are said in Unicode to belong to the script "Common". OpenType
does not recognize this script. The closest thing it has is the script 'DFLT'.
My understanding is that characters in the common script will have the script
of adjacent text assigned to them by OpenType.
<P>
Thus if a font supports latin, greek or cyrillic then digits and punctuation
might find themselves in any of those three scripts and all features which
apply to any such character should be present in all scripts. For example
if the digit 9 kerns with digit 1, then that kerning data should be present
in cyrillic and greek as well as latin.
<P>
However it is possible (and I gather common in Japanese) to use the digits
from one font surrounded by Kanji characters from another font. This means
the digits may be in a font which does not support Kanji. However OpenType
will assign them the Kanji script. Thus no lookups will be applied. Adobe
suggests that for most features in scripts should also appear in the fallback
script 'DFLT'. I'm not sure that anyone else follows this convention.
<H3>
Latin
</H3>
<P>
Uniscribe supports the
<A HREF="http://www.microsoft.com/typography/OpenType%20Dev/standard/shaping.mspx">following
features</A>
<P>
There are not many special complications in latin. Latin fonts can generally
fit in a single byte encoding with no (or few) font tables. There are a plethora
of accented glyphs which could be built -- or you could use mark to base
positioning. Kerning should be generated for some glyph combinations. A few
ligatures need to be generated (the "f" ligatures: ff, fi, fl, ffi, ffl and
perhaps st -- however for some languages (Turkish) the "fi" ligature should
not be built).
<P>
You may want to add a set of smallcaps. Adobe has reserved a block in the
private use area for latin small-caps -- this is now depreciated.
<P>
Some languages have specific requirements of their own
<UL>
<LI>
<A HREF="http://studweb.euv-frankfurt-o.de/twardoch/f/en/typo/ogonek/kreska.html">For
Polish</A>
</UL>
<H3>
Greek
</H3>
<P>
Uniscribe supports the
<A HREF="http://www.microsoft.com/typography/OpenType%20Dev/standard/shaping.mspx">following
features</A>
<P>
Greek also does not have many complications. Modern Greek fonts generally
fit in a single byte encoding. For modern greek are a few accented glyphs
that need to be built, while for polytonic greek there are many -- mark to
base & mark to mark are options. Kerning should be generated. I am not
aware of any standard ligatures for modern greek (ancient greek had ligatures
and variants on some of the glyphs though).
<P>
Small caps are again an option, and I have reserved a block in the private
use area for them -- again this is depreciated.
<H3>
Cyrillic
</H3>
<P>
Uniscribe supports the
<A HREF="http://www.microsoft.com/typography/OpenType%20Dev/standard/shaping.mspx">following
features</A>
<P>
Cyrillic fonts also fit in a single byte encoding. There are a few accented
glyphs. Kerning should be generated. I am not aware of any standard ligatures.
<P>
Some languages need variant glyphs (specified with a 'loca' feature)
<UL>
<LI>
<A HREF="http://jankojs.tripod.com/SerbianCyr.htm">Serbian/Macedonian</A>
</UL>
<H3>
Arabic
</H3>
<P>
Uniscribe supports the
<A HREF="http://www.microsoft.com/typography/OpenType%20Dev/arabic/shaping.mspx">following
features</A>
<P>
Arabic needs a complete set of initial, medial, final and isolated forms
-- Unicode has reserved space for these. Arabic also needs a vast set of
ligatures -- Unicode has reserved space for many, but I'd guess that extra
ligatures will be needed sometimes. Arabic also needs a set of mark (mark
to base, mark to ligature) attachments to position vowels above letters.
Arabic may need a glyph decomposition table.
<P>
I'm told that in good Arabic typography there need to be many more than 4
forms per glyph. I'm not sure how this should be supported.
<P>
Right to left.
<H3>
Hebrew
</H3>
<P>
Uniscribe supports the
<A HREF="http://www.microsoft.com/typography/OpenType%20Dev/hebrew/shaping.mspx">following
features</A>
<P>
Hebrew has a few final forms but no special tables are needed for these.
Hebrew may need kerning. Hebrew should have a set of mark (mark to base)
tables to position vowels over letters. Hebrew may need a glyph decomposition
table. I am not aware of any needed ligatures.
<P>
Right to left
<H3>
Indic scripts
</H3>
<P>
Uniscribe supports the
<A HREF="http://www.microsoft.com/typography/otfntdev/indicot/shaping.aspx">following
features</A>
<P>
Indic scripts need a set of ligatures.
<P>
(they probably need a lot more but I'm not aware of what)
<H3>
Korean Hangul
</H3>
<P>
Uniscribe supports the
<A HREF="http://www.microsoft.com/typography/OpenType%20Dev/hangul/shaping.mspx">following
features</A>
<P>
The Hangul script consists of a set of syllables built out of a phonetic
alphabet. Generally fonts consist of a set of precomposed syllables.
<P>
Complications are introduced by the massive combinatorial explosion of all
these syllables. These are eased in postscript by CID-keyed fonts.
<P>
Vertical writing and left to right writing are used, and some glyphs have
a different orientation when drawn vertically (parentheses for example).
<H3>
Japanese and Chinese (and Korean Hanja)
</H3>
<P>
MicroSoft does not describe these scripts (that I can find).
<P>
Again a massive collection of glyphs is needed, and postscript uses CID keyed
fonts to deal with this.
<P>
Vertical writing and left to right writing are used, and some glyphs have
a different orientation when drawn vertically (parentheses for example).
<P>
<P ALIGN=Center>
-- <A HREF="editexample7.html">Prev</A> -- <A HREF="overview.html">TOC</A>
-- <A HREF="fontview.html">Next</A> --
</DIV>
</BODY></HTML>
|