/htdocs.OLD/ja/gposgsub.html
HTML | 1545 lines | 906 code | 0 blank | 639 comment | 0 complexity | b84164b98d4ae9cf96c6f2aeeedf7e13 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.0
Large files files are truncated, but you can click here to view the full file
- <HTML>
- <HEAD>
- <!-- Created with AOLpress/2.0 -->
- <!-- AP: Created on: 29-Dec-2002 -->
- <!-- AP: Last modified: 11-Dec-2005 -->
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
- <!--<TITLE>Advanced Typography tables</TITLE> -->
- <TITLE>?????????? (ATT)</TITLE>
- <LINK REL="icon" href="../fftype16.png">
- <LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
- </HEAD>
- <BODY>
- <DIV id="in">
- <H1 ALIGN=Center>
- <!-- Advanced Typography Tables-->
- ?????????? (ATT)
- </H1>
- <P>
- <!--
- These differ between OpenType (originally called TrueType Open) and Apple
- (GX or Apple Advanced Typography). My support for both OpenType and Apple
- is incomplete. -->
- ???? OpenType (?? TrueType Open ?????????) ? Apple (GX ??? Apple ????????? (ATT)) ???????????????? OpenType ? Apple ???????????????????
- <UL>
- <LI>
- <!-- <A HREF="#opentype">The <B><CODE>GPOS</CODE></B>,
- <B><CODE>GSUB</CODE></B> and <B><CODE>GDEF</CODE></B> opentype tables</A>
- <A HREF="#opentype"><B><CODE>GPOS</CODE></B>, <B><CODE>GSUB</CODE></B> ??? <B><CODE>GDEF</CODE></B> OpenType ????</A>
- <LI>
- <!-- <A HREF="#AAT">Apple Advanced Typography</A>-->
- <A HREF="#AAT">Apple ??????????</A>
- <LI>
- <!-- <A HREF="#Conversion">What features can be converted between OpenType and
- AAT?</A>-->
- <A HREF="#Conversion">????? OpenType ? AAT ?????????</A>
- <LI>
- <A HREF="TrueOpenTables.html">other true type and open type tables</A>
- <LI>
- <A HREF="#Unsupported">What is unsupported</A>
- <LI>
- <A HREF="non-standard.html">FontForge's non-standard extensions</A>
- </UL>
- <H2>
- <!-- The <B><CODE>GPOS,</CODE></B> <B><CODE>GSUB</CODE></B> and
- <B><CODE>GDEF</CODE></B> <A NAME="opentype">opentype</A> tables -->
- <B><CODE>GPOS</CODE></B>, <B><CODE>GSUB</CODE></B> ??? <B><CODE>GDEF</CODE></B> <A NAME="opentype">OpenType</A> ????
- </H2>
- <P>
- <!--
- These two tables are used for positioning and substituting glyphs. The GPOS
- table can control things like: kerning, accent positioning, cursive joining,
- etc. The GSUB table can control things like: ligatures, arabic forms, vertical
- rotation, conversion to small caps, indic glyph rearrangement, etc. -->
- ????2?????????????????????????????
- GPOS ?????????????????????????: ??????????????????????????
- GSUB ?????????????????????????: ???????????????????????????????????????????????????
- <P>
- <!--
- This page assumes basic familiarity with the abilities of the tables, for
- more information on them read, study and inwardly digest the opentype docs
- on:-->
- ????????????????????????????????????????????????????????????????????? OpenType ???????????????????????????
- <UL>
- <LI>
- <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats.html">The
- header for both GPOS and GSUB</A>-->
- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats.html">GPOS ? GSUB ????????</A>
- <LI>
- <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats2.html">The
- GPOS table</A>, for positioning glyphs -->
- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats2.html">GPOS ???? (????????????)</A>
- <LI>
- <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats1.html">The
- GSUB table</A>, for substituting glyphs-->
- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats1.html">GSUB ????</A> (??????????)
- <LI>
- <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats5.html">The
- GDEF table</A>, for classifying glyphs and for providing a ligature caret
- table -->
- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats5.html">GDEF ???? (????????????????????????????)</A>
- <LI>
- <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag3.html">The
- list of feature tags supported by opentype</A>-->
- <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag3.html">OpenType ???????????????</A>
- <LI>
- <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag1.html">The
- list of script tags supported by opentype</A>-->
- <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag1.html">OpenType ????????????????</A>
- <LI>
- <!-- -<A HREF="http://partners.adobe.com/public/developer/opentype/index_tag2.html">The
- list of language tags supported by opentype</A>-->
- <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag2.html">OpenType ???????????????</A>
- </UL>
- <P>
- <!--
- The basic idea of the GPOS and GSUB tables is that each script (or language
- within a script) has a set of "features" that are available to it. A feature
- in turn is associated with a lookup which contains data for the feature.
- An example of a script is 'latn' for latin, 'arab' for arabic, 'hani' for
- chinese ideographs. Two examples of features are 'kern' which provides kerning
- information between pairs of glyphs and 'init' which will transform one set
- of glyphs to another when those glyphs are at the beginning of a word.-->
- GPOS ????? GSUB ????????????????????? (?????????????????) ??????????????“??”?????????????????????????????????????????? 1 ?????????????????????????????‘latn’, ???????‘arab’, ???‘hani’????????????? 2 ??????????????????????????‘kern’?????????????????????????????????????‘init’??????
- <P>
- <!--
- FontForge <A HREF="gposgsub.html#Unsupported">does not support </A>the full
- range of possibilities inherent in these tables. -->
- FontForge ?????? 2 ??????????????????????<A HREF="gposgsub.html#Unsupported">???????????????</A>?
- <H3>
- <!-- The <B><CODE><A NAME="GPOS">GPOS</A></CODE></B> table-->
- <B><CODE><A NAME="GPOS">GPOS</A></CODE></B> ????
- </H3>
- <P>
- <!--
- FontForge will read the following sub tables of the GPOS table: -->
- FontForge ? GPOS ?????????????????????:
- <TABLE Border=1>
- <TR>
- <TH></TH>
- <TH>name</TH>
- <!-- <TH>Reading support</TH>-->
- <TH>????????</TH>
- <!-- <TH>Writing support</TH>-->
- <TH>????????</TH>
- </TR>
- <TR>
- <TD>1</TD>
- <!-- <TD>single adjustment</TD>-->
- <TD>1 ?????</TD>
- <!-- <TD>This sub-table allows the font designer to change the metrics of a specific
- glyph. The feature tag will provide a context in which the change should
- occur. For instance the 'tnum' (tabular numbers) feature could change a
- proportionally spaced digit by adjusting its advance width to be some set
- value and then centering the digit (by adjusting the left side bearing) within
- the new width.</TD>-->
- <TD>????????????????????????????????????????????????????????????????????????????‘tnum’ (????) ??????????????????????????????????? (??????????????) ???????????????????????????????????????</TD>
- <!-- <TD>These can be created with the <A HREF="charinfo.html">Element->Char
- Info</A>->Position command.</TD>-->
- <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE></A>?<CODE>[??]</CODE> ?????????????????</TD>
- </TR>
- <TR>
- <TD>2</TD>
- <!-- <TD>pair adjustment</TD>-->
- <TD>????????</TD>
- <!-- <TD>This sub-table allows the font designer to change the metrics of a specific
- pair of glyph. The most common use of this is for kerning where the advance
- width of the first glyph is altered depending on which glyph follows it.
- But the table is more general than that and could support mark (accent, vowel)
- positioning over a base glyph (though that is more efficiently done with
- the mark to base subtable).</TD> -->
- <TD>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (????????) ??????????????????? (?????????????????????????????????????????????????)?
- </TD>
- <!-- <TD>'kern' feature s may be created from the <A HREF="metricsview.html">Metrics
- View</A>. 'vkrn' with
- <A HREF="metricsmenu.html#VKernFromHKern">Metrics->VKern From HKern</A>.</TD>-->
- <TD>‘kern’???????????????????????‘vkrn’? <A HREF="metricsmenu.html#VKernFromHKern"><CODE>?????(<U>M</U>)</CODE>?<CODE>?????????????</CODE></A>?????????????</TD>
- </TR>
- <TR>
- <TD>3</TD>
- <!-- <TD>cursive attachment</TD>-->
- <TD>??????</TD>
- <!-- <TD>This sub-table allows the font designer to force adjacent characters
- to join at specific points. It can be used to generate the slanted script
- style needed for Urdu.</TD> -->
- <!-- <TD>This sub-table allows the font designer to force adjacent glyphs to join
- at specific points. It can be used to generate the slanted script style needed
- for Urdu.</TD> -->
- <TD>?????????????????????????????????????????????????????????????????????????????????????????????????</TD>
- <!-- <TD>Only the 'curs' feature is supported for this sub-table. These may be
- created with the <A HREF="pointmenu.html#AddAnchor">Points->Add Anchor</A>
- command</TD>-->
- <TD>????????????????????‘curs’???????????<A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ???????????????
- </TR>
- <TR>
- <TD>4</TD>
- <!-- <TD>mark to base</TD>-->
- <TD>???????????</TD>
- <!-- <TD>This sub-table allows the font designer to specify how mark glyphs (accents,
- vowel signs, etc.) are positioned over base glyphs. Every glyph can have
- an attachment point and the mark's attachment point will be placed on the
- base's attachment point so the two join properly. See my
- on the base's attachment point so the two join properly. See my
- <A HREF="overview.html#Anchors">example</A> in the overview.</TD>-->
- <TD>?????????????????????????? (????????????) ????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????<A HREF="overview.html#Anchors">?</A>????????</TD>
- <!-- <TD>These may be created with the
- <A HREF="pointmenu.html#AddAnchor">Points->Add Anchor</A> command</TD> -->
- <TD>???? <A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>5</TD>
- <!-- <TD>mark to ligature</TD>-->
- <TD>????????</TD>
- <!-- <TD>This sub-table is very similar to the previous one except that the base
- glyph is a ligature and may have several different points at which the same
- type of accent may be placed.</TD> -->
- <TD>?????????????????????????????????????????????????????????????????????????????????</TD>
- <!-- <TD>These may be created with the
- <A HREF="pointmenu.html#AddAnchor">Points->Add Anchor</A> command</TD> -->
- <TD>???? <A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>6</TD>
- <!-- <TD>mark to mark</TD>-->
- <TD>?????????</TD>
- <!-- <TD>This sub-table is very similar to the previous two except that the base
- glyph is itself a mark. This may be used when a glyph has two accents each
- of which would normally be placed at the same attachment point on a base
- glyph. The second accent will be place relative to the first accent rather
- than to the base glyph.</TD> -->
- <TD>??????????? 2 ??????????????????????????????????????????????????? 2 ???????????????????????????????????????????????????2 ?????????????????????????????????????????????????????</TD>
- <!-- <TD>These may be created with the
- <A HREF="pointmenu.html#AddAnchor">Points->Add Anchor</A> command</TD> -->
- <TD>???? <A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>7</TD>
- <!-- <TD>contextual positioning</TD>-->
- <TD>?????????</TD>
- <!-- <TD>This sub-table allows the font designer to control the positioning of
- glyphs when they occur within a specific string (or class of strings). For
- instance this table could say "when you see a digit followed by the string
- "th" then raise the "th" into a superscript position"</TD> -->
- <TD>????????????????????????????????????? (??????????) ??????????????????????????</TD>
- <!-- <TD>These may be created with the
- <A HREF="fontinfo.html#Contextual">Element->Font Info->Contextual
- </A>command</TD> -->
- <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>8</TD>
- <!-- <TD>chaining contextual positioning</TD>-->
- <TD>????????????</A>
- <!-- <TD>This is a slightly more complex version of the above, it doesn't really
- add new capabilities, but it does provide a more logical approach to the
- issue.</TD> -->
- <TD>?????????????????????????????????????????????????????????????????????????????</TD>
- <!-- <TD>These may be created with the
- <A HREF="fontinfo.html#Contextual">Element->Font Info->Contextual
- </A>command</TD> -->
- <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>9</TD>
- <!-- <TD>extension positioning</TD>-->
- <TD>??????</TD>
- <!-- <TD>This is used to allow for a GPOS table which is bigger than 64k. Its
- use should be quite invisible to the font designer</TD> -->
- <TD>????GPOS ????? 64K ???????????????????????????????????????????????????????????</TD>
- <!-- <TD>FontForge uses this sub-table when needed.</TD>-->
- <TD>FontForge ?????????????????????????</TD>
- </TR>
- <TR>
- <TD>10+</TD>
- <!-- <TD>reserved for future use</TD>-->
- <TD>???????????</TD>
- <TD></TD>
- <!-- <TD>FontForge does not support these sub-tables yet.<BR>
- (nor does anyone)</TD>-->
- <TD>FontForge ? (?????????) ??????????????????????</TD>
- </TR>
- </TABLE>
- <P>
- <!--
- FontForge also has built into it knowledge on how to provide default values
- for some features that use these tables. See
- <A HREF="elementmenu.html#DefaultATT">Element->Typo. Features->Default
- ATT</A> command for that. -->
- FontForge ????????????????????????????????????????????????????????????????????<A HREF="elementmenu.html#DefaultATT"><CODE>?????(<U>L</U>)</CODE>?<CODE>????(<U>Y</U>)</CODE>?<CODE>??????ATT(<U>D</U>)</CODE></A> ??????????????
- <P>
- <!--
- FontForge will retain the order of features in the GPOS table and when a
- font is generated the order should be the same as it was before. -->
- FontForge ? GPOS ???????????????????????????????????????????????
- <H3>
- <!-- The <B><CODE><A NAME="GSUB">GSUB</A></CODE></B> table-->
- <B><CODE><A NAME="GSUB">GSUB</A></CODE></B> ????
- </H3>
- <P>
- <!--
- FontForge will read the following sub tables of the GSUB table: -->
- FontForge ??????????? GSUB ????????????:
- <TABLE Border=1>
- <TR>
- <TH></TH>
- <TH>name</TH>
- <!-- <TH>Reading support</TH>-->
- <TH>????????</TH>
- <!-- <TH>Writing support</TH>-->
- <TH>????????</TH>
- </TR>
- <TR>
- <TD>1</TD>
- <!-- <TD>single substitution</TD>-->
- <TD>???? (????)</TD>
- <!-- <TD>This sub-table allows the font designer to change from one glyph to another,
- with a context provided by the feature tag. For example many scripts have
- letters which have a different form at the end of a word than they do within
- (this is true of every letter in arabic, several in hebrew, lower case sigma
- in greek, and the long-s/short-s pair in renaissance latin). So the 'fina'
- feature would map the normal form into the final form, and the word processing
- program would do a lookup at the end of each word to see if a transformation
- was needed.</TD> -->
- <TD>??????????????????????????????????????????????????????????????????????????????????????????????????????????????? (?????????????????????????????????????????????????????????????? s/?? s ????????????)???????‘fina’????????????????????????????????????????????????????????????????????</TD>
- <!-- <TD>These can be created with the <A HREF="charinfo.html">Element->Char
- Info</A>->Substitution command.</TD> -->
- <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[??]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>2</TD>
- <!-- <TD>multiple substitution</TD>-->
- <TD>????</TD>
- <!-- <TD>This sub-table allows the font designer to replace one glyph by a series
- of others. This is generally used for rather technical layout issues.</TD>-->
- <TD>???????????????????????1 ?????????????????????????????????????????????????????????</TD>
- <!-- <TD>These can be created with the <A HREF="charinfo.html">Element->Char
- Info</A>->Multiple Substitution command.</TD> -->
- <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>3</TD>
- <!-- <TD>alternate substitution</TD>-->
- <TD>???????</TD>
- <!-- <TD>This sub-table allows the font designer to have a series of "alternates"
- for each glyph. One common example would be an italic font which had several
- swash variants for each capital letter. The word processing program would
- allow the user to choose which variant was appropriate</TD> -->
- <TD>??????????????????????????“???”???????????????????????????????????????????????????????????????????????????????????????????????????????</TD>
- <!-- <TD>These can be created with the <A HREF="charinfo.html">Element->Char
- Info</A>->Alternate Substitution command.</TD> -->
- <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[??????]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>4</TD>
- <!-- <TD>ligature substitution</TD>-->
- <TD>????</TD>
- <!-- <TD>This sub-table allows the font designer to replace a string of glyphs
- with another glyph. A common example is a ligature where the string
- <IMG SRC="f+i.png" WIDTH="24" HEIGHT="25" ALIGN="Middle"> is replaced by
- the <IMG SRC="fi.png" WIDTH="20" HEIGHT="25" ALIGN="Middle"> ligature.</TD> -->
- <TD>??????????????????????????????????? 1 ?????????????????????????????<IMG SRC="../f+i.png" WIDTH="24" HEIGHT="25" ALIGN="Middle"> ???????????? <IMG SRC="../fi.png" WIDTH="20" HEIGHT="25" ALIGN="Middle"> ?????????????????????</TD>
- <!-- <TD>These can be created with the <A HREF="charinfo.html">Element->Char
- Info</A>->Ligature command.</TD> -->
- <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[??]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>5</TD>
- <!-- <TD>contextual substitution</TD>-->
- <TD>???????</TD>
- <!-- <TD>This subtable allows for a string of glyphs to replace another string
- of glyphs (or class of strings of glyphs)</TD> -->
- <TD>????????????????????????????? (?????????????) ?????????????
- <!-- <TD>These may be created with the
- <A HREF="fontinfo.html#Contextual">Element->Font Info->Contextual
- </A>command</TD>-->
- <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>6</TD>
- <!-- <TD>chaining contextual substitution</TD>-->
- <TD>?????????</TD>
- <!-- <TD>This is a slightly more complex version of the above, it doesn't really
- add new capabilities, but it does provide a more logical approach to the
- issue.</TD> -->
- <TD>?????????????????????????????????????????????????????????????????????????????</TD>
- <!-- <TD>These may be created with the
- <A HREF="fontinfo.html#Contextual">Element->Font Info->Contextual
- </A>command</TD> -->
- <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>7</TD>
- <!-- <TD>extension positioning</TD>-->
- <TD>????</TD>
- <!-- <TD>This is used to allow for a GSUB table which is bigger than 64k. Its
- use should be quite invisible to the font designer</TD> -->
- <TD>????GSUB ????? 64K ???????????????????????????????????????????????????????????</TD>
- <!-- <TD>FontForge uses this sub-table when needed.</TD>-->
- <TD>FontForge ?????????????????????????</TD>
- </TR>
- <TR>
- <TD>8</TD>
- <!-- <TD>reverse chaining contextual single substitution</TD>-->
- <TD>???????????????</TD>
- <!-- <TD>This allows glyph substitutions to happen in reverse order, and it a
- variant of the chaining contextual subtable.</TD> -->
- <TD>????????????????????????????????????????????????</TD>
- <!-- <TD>These may be created with the
- <A HREF="fontinfo.html#Contextual">Element->Font Info->Contextual
- </A>command</TD> -->
- <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
- </TR>
- <TR>
- <TD>9+</TD>
- <!-- <TD>reserved for future use</TD>-->
- <TD>???????????</TD>
- <TD></TD>
- <!-- <TD>FontForge does not support these sub-tables yet.<BR>
- (nor does anyone)</TD>-->
- <TD>FontForge ? (?????????) ??????????????????????</TD>
- </TR>
- </TABLE>
- <P>
- <!--
- FontForge also has built into it knowledge on how to provide default values
- for some features that use these tables. See
- <A HREF="elementmenu.html#DefaultATT">Element->Default ATT</A> command
- for that. -->
- FontForge ???????????????????????????????????????????????????????????
- <P>
- <!--
- FontForge can produce some of these tables, but the text layout/word processing
- program used has to look up the tables and do the actual work of rearranging
- the glyphs. -->
- FontForge ???????????????????????????????????/???????????????????????????????????????????????????????????
- <P>
- <!--
- FontForge will retain the order of features in the GSUB table, and the user
- may adjust it with the <A HREF="fontinfo.html#Order">Element->Font Info</A>
- command. -->
- FontForge ? GSUB ?????????????????????????? <A HREF="fontinfo.html#Order"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE></A> ??????????????????
- <H3>
- <!-- The <B><CODE><A NAME="GDEF">GDEF</A> </CODE></B>table-->
- <B><CODE><A NAME="GDEF">GDEF</A></CODE></B> ????
- </H3>
- <P>
- <!--
- FontForge will read ligature carets out of a GDEF table. -->
- FontForge ????????? GDEF ?????????????
- <P>
- <!--
- It will generate a GDEF table containing a glyph class definition sub-table
- (if needed) or a ligature caret sub-table (if needed). -->
- FontForge ???????????????? (?????) ?????????? (?????) ??? GDEF ???????????
- <H2>
- <!-- <A NAME="AAT">Apple</A> Advanced Typography-->
- <A NAME="AAT">Apple</A> ?????? (ATT)
- </H2>
- <P>
- <!--
- As above I do not go deeply into the abilities of these tables, for more
- information see Apple's docs: -->
- ??????????????????????????????????????????????? Apple ?????????????
- <UL>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6kern.html">The
- 'kern' table</A> -->
- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6kern.html">‘kern’????</A>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6lcar.html">The
- 'lcar' (ligature caret) table</A> -->
- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6lcar.html">‘lcar’ (???????) ????</A>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6morx.html">The
- 'morx' (extended glyph metamorphosis) table</A>-->
- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6morx.html">‘morx’ (???????) ????</A>
- <UL>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6mort.html">The
- 'mort' (older version of 'morx') table</A>-->
- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6mort.html">‘mort’ (‘morx’ ???) ????</A>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6feat.html">The
- 'feat' (feature) table</A> -->
- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6feat.html">‘feat’ (??) ????</A>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/Registry/index.html">Apple's Font
- Feature registry</A> -->
- <A HREF="http://developer.apple.com/fonts/Registry/index.html">Apple ??????????</A>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6Tables.html">Description
- of the subtables of the 'mort'/'morx' tables</A> -->
- <A HREF="http://developer.apple.com/fonts/Registry/index.html">‘mort’/‘morx’??????????????</A>
- </UL>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6opbd.html">The
- ‘opbd’(optical bounds) table</A> -->
- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6opbd.html">‘opbd’ (??????) ????</A>
- <LI>
- <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6prop.html">The
- 'prop' (glyph properties) table</A> -->
- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6prop.html">‘prop’ (?????) ????</A>
- </UL>
- <P>
- <!--
- FontForge will current read and produce (if Apple mode is set in font generation)
- the following tables: -->
- ???FontForge ?????????????? (Apple ????????????????????) ????:
- <TABLE BORDER CELLPADDING="2">
- <CAPTION>
- <!-- Apple tables corresponding vaguely to <A HREF="#GDEF">GDEF</A>-->
- <A HREF="#GDEF">GDEF</A> ??????? OpenType ?????
- </CAPTION>
- <TR>
- <TH>tag</TH>
- <TH>name</TH>
- <!-- <TH>Reading support</TH>-->
- <TH>????????</TH>
- <!-- <TH>Writing support</TH>-->
- <TH>????????</TH>
- </TR>
- <TR>
- <TD><CODE>'lcar'</CODE></TD>
- <!-- <TD>ligature caret table</TD>-->
- <TD>???????????</TD>
- <!-- <TD>FontForge will read ligature carets</TD>-->
- <TD>FontForge ???????????????</TD>
- <!-- <TD>FontForge will produce this table if the user has specified ligature
- carets</TD> -->
- <TD>FontForge ??????????????????????????????????</TD>
- </TR>
- <TR>
- <TD><CODE>'prop'</CODE></TD>
- <!-- <TD>glyph properties table</TD>-->
- <TD>?????????</TD>
- <!-- <TD>FontForge will read this table to figure out which glyphs are hebrew
- and arabic, and which have 'r2la' substitutions.</TD> -->
- <TD>FontForge ????????????????????‘r2la’??????????????????????????????????????</TD>
- <!-- <TD>FontForge will generate this table if the font contains some right to
- left glyphs.</TD> -->
- <TD>FontForge ????????????????????????????????????????????</TD>
- </TR>
- </TABLE>
- <P>
- <TABLE BORDER CELLPADDING="2">
- <CAPTION>
- <!-- Apple tables corresponding vaguely to <A HREF="#GPOS">GPOS</A>-->
- <A HREF="#GPOS">GPOS</A> ??????? OpenType ?????
- </CAPTION>
- <TR>
- <TH>tag</TH>
- <TH>name</TH>
- <!-- <TH>Reading support</TH>-->
- <TH>????????</TH>
- <!-- <TH>Writing support</TH>-->
- <TH>????????</TH>
- </TR>
- <TR>
- <TD><CODE>'kern'</CODE></TD>
- <!-- <TD>kerning table</TD>-->
- <TD>?????????</TD>
- <!-- <TD>FontForge will read horizontal/vertical kerning pairs and classes. FontForge
- can read contextual kerning information too into a state machine.</TD> -->
- <TD>FontForge ????/???????????????????????????FontForge ???????????????????????????????</TD>
- <!-- <TD>FontForge will produce this if the font contains kerning data - - kerning
- pairs, kerning by classes, and kerning by state machine.</TD> -->
- <TD>FontForge ??????????????????????????????????????????????????????????????????????</TD>
- </TR>
- <TR>
- <TD><CODE>'opbd'</CODE></TD>
- <!-- <TD>Optical bounds table</TD>-->
- <TD>?????????</TD>
- <!-- <TD>FontForge will read optical bounds</TD>-->
- <TD>FontForge ?????????????</TD>
- <!-- <TD>FontForge will produce this table if the user has specified right and
- left bounds as simple positions ('lfbd' and 'rtbd').</TD> -->
- <TD>FontForge ???????????????????????? (‘lfbd’?‘rtbd’) ??????????????????????</TD>
- </TR>
- </TABLE>
- <P>
- <P>
- <!--
- FontForge has support for the <CODE>'mort'</CODE> and
- <CODE>'<A NAME="morx">morx</A>'</CODE> tables (Glyph metamorphosis and extended
- glyph metamorphosis tables). These correspond vaguely to the
- <A HREF="#GSUB">GSUB</A> table. Note: Any feature type/setting combinations
- which correspond directly to an open type feature will be converted to the
- opentype tag when read in. It will be converted back to a feature/setting
- when an apple font is generated (use
- <A HREF="prefs.html#Mac">File->Preferences</A> to extend FontForge's mapping
- from feature type/setting to opentype tags). -->
- FontFonge ?? <CODE>‘mort’</CODE> (?????) ????? <CODE>‘<A NAME="morx">morx</A>’</CODE> (???????) ?????????????????????????? <A HREF="#GSUB">GSUB</A> ???????????????: OpenType ??????????????????????/?????????????? OpenType ???????????????/??????????????Apple ?????????????? (FontForge ???/???? OpenType ???????????????<A HREF="prefs.html#Mac"><CODE>????(<U>F</U>)</CODE>?<CODE>????(<U>E</U>)...</CODE></A> ?????????)?
- <TABLE BORDER CELLPADDING="2">
- <CAPTION>
- <!-- Sub tables of <CODE>'mort'</CODE> or <CODE>'morx'</CODE>-->
- <CODE>‘mort’</CODE> ??? <CODE>‘morx’</CODE> ???????????
- </CAPTION>
- <TR>
- <TH></TH>
- <!-- <TH>name</TH>-->
- <TH>??</TH>
- <!-- <TH>Reading support</TH>-->
- <TH>????????</TH>
- <!-- <TH>Writing support</TH>-->
- <TH>????????</TH>
- </TR>
- <TR>
- <TD>0</TD>
- <!-- <TD>Indic style rearrangement</TD>-->
- <TD>???????????</TD>
- <!-- <TD>FontForge can read these and stores them as state machines (which can
- be edited with <A HREF="fontinfo.html#Mac-SM">Font Info</A>)</TD> -->
- <TD>FontForge ???????????????????????????? (???? <A HREF="fontinfo.html#Mac-SM">??????</A> ????????????)?</TD>
- <!-- <TD>Any indic state machines will be output in the generated font.</TD>-->
- <TD>??????????????????????????????????</TD>
- </TR>
- <TR>
- <TD>1</TD>
- <!-- <TD>contextual glyph substitution</TD>-->
- <TD>??????????</TD>
- <!-- <TD>FontForge can read these and stores them as state machines (which can
- be edited with <A HREF="fontinfo.html#Mac-SM">Font Info</A>)</TD> -->
- <TD>FontForge ???????????????????????????? (???? <A HREF="fontinfo.html#Mac-SM">??????</A> ????????????)?</TD>
- <!-- <TD>If the font contains any state machines they will be output here. If
- there are no state machines then the following conversions of opentype features
- will be done: -->
- <TD>?????????????????????????????????????????????????????????????? OpenType ?????????:
- <UL>
- <LI>
- <!-- FontForge will generate a <A NAME="cursive-connection">cursive connection
- </A>feature using this subtable type if the font contains 'init', 'medi',
- 'fina' or 'isol' simple substitutions. -->
- FontForge ???????‘init’,‘medi’,‘fina’???‘isol’????????????????????????????<A NAME="cursive-connection">??????</A>??????????
- <LI>
- <!-- In <A HREF="gposgsub.html#sometimes">some cases</A> FontForge is able to
- convert an OpenType Contextual/Chaining substitution table into an Apple
- contextual glyph substitution table. -->
- <A HREF="gposgsub.html#sometimes">??????????????</A>???FontForge ? OpenType ?????????/???????????? Apple ???????????????????????????
- </UL>
- </TD>
- </TR>
- <TR>
- <TD>2</TD>
- <!-- <TD>ligature substitution</TD>-->
- <TD>????</TD>
- <!-- <TD>FontForge can read the unconditional information from these and stores
- them as opentype ligatures (which can be edited with
- <A HREF="charinfo.html#features">Char Info</A>).</TD> -->
- <TD>FontForge ???????????????OpenType ????????????????? (???? <A HREF="charinfo.html#features">?????</A> ????????????)?</TD>
- <!-- <TD>If there are any ligatures with an apple feature/setting (or which have
- an opentype tag which can be converted to an apple feature/setting) then
- this table will be output.</TD>-->
- <TD>??????????????????? (??? Apple ???/???????? OpenType ????????) ??????????????</TD>
- </TR>
- <TR>
- <TD>4</TD>
- <!-- <TD>non-contextual glyph substitution</TD>-->
- <TD>???????????</TD>
- <!-- <TD>FontForge can read these and stores them as opentype simple substitutions
- (which can be edited with <A HREF="charinfo.html#features">Char Info</A>)</TD> -->
- <TD>FontForge ??????????OpenType ??????????????????? (???? <A HREF="charinfo.html#features">?????</A> ????????????)?</TD>
- <!-- <TD>If there are any substitutions with an apple feature/setting (or which
- have an opentype tag which can be converted to an apple feature/setting)
- then this table will be output.</TD> -->
- <TD>??????????????????? (??? Apple ???/???????? OpenType ????????) ??????????????</TD> </TR>
- <TR>
- <TD>5</TD>
- <!-- <TD>contextual glyph insertion</TD>-->
- <TD>??????????</TD>
- <!-- <TD>FontForge can read these and stores them as state machines (which can
- be edited with <A HREF="fontinfo.html#Mac-SM">Font Info</A>)</TD> -->
- <TD>FontForge ???????????????????????????? (???? <A HREF="fontinfo.html#Mac-SM">??????</A> ????????????)?</TD>
- <!-- <TD>Any glyph insertion state machines will be output in the generated font.</TD>-->
- <TD>????????????????????????????????</TD>
- </TR>
- </TABLE>
- <H3>
- <!-- What features can be <A NAME="Conversion">interconverted</A> between OpenType
- and AAT? -->
- OpenType ? AAT ??????????<A NAME="Conversion">????</A>????
- </H3>
- <P>
- <!--
- Some features have almost the same meaning in OpenType and AAT (although
- they are expressed quite differently), others are similar enough that they
- can sometimes be converted, and others have essentially no common ground. -->
- ???????? OpenType ? AAT ??????????????? (???????????????????)?????????????????????????????????????????????????????
- <P>
- <TABLE BORDER CELLPADDING="2">
- <TR>
- <!-- <TH>OT Table</TH>-->
- <TH>OpenType ????</TH>
- <!-- <TH>AAT Table</TH>-->
- <TH>AAT ????</TH>
- <TH><P ALIGN=Left>
- <!-- Description</TH>-->
- ??</TH>
- </TR>
- <TR>
- <TD VALIGN="Top"><P ALIGN=Center>
- GDEF</TD>
- <TD VALIGN="Top"><P ALIGN=Center>
- lcar</TD>
- <!-- <TD>The ligature caret information in both 'GDEF' and 'lcar' is essentially
- identical and FontForge has no trouble reading both and converting from one
- to the other.</TD> -->
- <TD>??????????‘GDEF’?‘lcar’?????????FontForge ?????????????????????????
- </TR>
- <TR>
- <TD><P ALIGN=Center>
- GPOS</TD>
- <TD><P ALIGN=Center>
- kern</TD>
- <!-- <TD>In most cases kerning information can be converted from one format to
- another. Both provide support for vertical kerning and right to left kerning.
- Both provide support for kerning by glyph pair and kerning by classes.-->
- <TD>??????????????????????????????????????????????????????????????????????????
- <P>
- <!-- OpenType allows kerning commands to be supplied via a contextual chaining
- feature, Apple allows them to be controled by a state machine. FontForge
- supports both, but does not interconvert.</TD> -->
- OpenType ?????????????????????????????Apple ??????????????????????FontForge ?????????????????????????</TD>
- </TR>
- <TR>
- <TD><P ALIGN=Center>
- GPOS</TD>
- <TD><P ALIGN=Center>
- opbd</TD>
- <!-- <TD>The GPOS features 'lfbd' and 'rtbd' provide the information needed to
- generate an Apple opbd table. If FontForge reads a font with an opbd table
- it will generate appropriate 'lfbd' and 'rtbd' features. If FontForge generates
- a font in apple mode that has these features it will create an opbd table.
- Similarly when FontForge reads an opbd table it will create 'lfbd' and 'rtbd'
- features.</TD> -->
- <TD>GPOS ??‘lfbd’???‘rfbd’? Apple ? opbd ???????????????????????????FontForge ? opbd ?????????????????????????‘lfbd’???‘rtbd’?????????FotnForge ? Apple ??????????????????????????????‘opbd’???????????????FontForge ? opbd ????????????‘lfbd’?‘rtbd’?????????</TD>
- </TR>
- <TR>
- <TD><P ALIGN=Center>
- GPOS</TD>
- <TD>
- <HR>
- </TD>
- <!-- <TD>I am not aware of any way to convert other GPOS features to AAT.</TD> -->
- <TD>?????? GPOS ??? AAT ??????????????????</TD>
- </TR>
- <TR>
- <TD><P ALIGN=Center>
- GSUB</TD>
- <TD><P ALIGN=Center>
- morx</TD>
- <!-- <TD ROWSPAN=2>The 'mort' and 'morx' tables have the same capabilities ('mort'
- tables are an old format and Apple currently encourages that 'morx' tables
- be used instead). FontForge can read either one, but only generates 'morx'
- tables. Interconversion depends on specific feature types and the sub-table
- formats, see below</TD>-->
- <TD ROWSPAN=2>‘mort’???‘morx’???????????????? (‘mort’???????????????Apple ??????????‘morx’??????????????)?FontForge ??????????????????‘morx’?????????????????????????????????????????????????????????????:
- </TR>
- <TR>
- <TD><P ALIGN=Center>
- GSUB</TD>
- <TD><P ALIGN=Center>
- mort</TD>
- </TR>
- </TABLE>
- <H4>
- <!-- An analysis of GSUB and morx sub-tables and feature tags-->
- GSUB ??? morx ??????????????
- </H4>
- <P>
- <!--
- OpenType uses a four character feature tag (like 'liga') while Apple uses
- two numbers to represent a feature setting (<1,2>). For FontForge to
- be able to inter-convert an OpenType feature into an Apple feature there
- must first be a correspondence between the two naming conventions. Sometimes
- there is an easy direct conversion (above 'liga' and <1,2> both represent
- "Common Ligatures") but far more often there is none. See
- <A HREF="gposgsub.html#OT-Mac-features">below</A> for a list of the tags
- and feature settings that FontForge considers similar enough to interconvert. -->
- OpenType ? 4 ??????? (‘liga’??) ????????????Apple ???????? 2 ???? (<1,2> ??) ???????FontForge ??????OpenType ???? Apple ??????????????????????? 2 ??????????????????????????????????????????????????? (????‘liga’? <1,2> ?????“??????”?????)?FontForge ??????????????????????????????????????<A HREF="gposgsub.html#OT-Mac-features">??</A>??????????
- <P>
- <!--
- GSUB tables have 7 sub-table formats, while morx tables have 5. -->
- GSUB ?????? 7 ???????????????????????morx ?????? 5 ????????
- <TABLE BORDER CELLPADDING="2">
- <TR>
- <!-- <TH>GSUB<BR>
- sub-<BR>
- table</TH>-->
- <TH>GSUB<BR>??<BR>????</TH>
- <!-- <TH>morx<BR>
- sub-<BR>
- table</TH>-->
- <TH>morx<BR>??<BR>????</TH>
- <TH><P ALIGN=Left>
- <!-- Description</TH>-->
- ??</TH>
- </TR>
- <TR>
- <TD VALIGN="Top"><P ALIGN=Center>
- <!-- Single</TD> -->
- ??</TD>
- <TD VALIGN="Top"><P ALIGN=Center>
- <!-- Non-<BR>
- Contextual<BR>
- Glyph</TD> -->
- ??<BR>???<BR>???</TD>
- <!-- <TD>These two sub-tables have almost exactly the same capabilities. Each
- allows one glyph to be substituted for another. The morx sub-table also allows
- a glyph to be deleted, while the GSUB sub-table does not.</TD> -->
- <TD>???? 2 ????????????????????????????????? 1 ???????? 1 ????????????????morx ?????????????????????????GSUB ???????????????????</TD>
- </TR>
- <TR>
- <TD VALIGN="Top"><P ALIGN=Center>
- <!-- Multiple</TD>-->
- ??</TD>
- <TD></TD>
- <!-- <TD>This GSUB subtable allows a single glyph to be replaced by multiple glyphs.
- It has some similarities to Apple's Glyph Insertion sub-table except:-->
- <TD>?? GSUB ????????1 ????????????????????????????????????????Apple ??????????????????????????:
- <UL>
- <LI>
- <!-- the 'morx' sub-table always leaves the current glyph in the glyph stream,
- while this sub-table need not -->
- ‘morx’??????????????????????????????????????????????????????
- <LI>
- <!-- the 'morx' sub-table is contextual while this sub-table is never. (But if
- this sub-table is wrapped inside a Context or Chaining Context subtable the
- result can be contextual). -->
- ‘morx’????????????????????????????????????? (??????????????????????????????????????????????????????????????)?
- </UL>
- </TD>
- </TR>
- <TR>
- <TD></TD>
- <TD VALIGN="Top"><P ALIGN=Center>
- <!-- Glyph<BR>
- Insertion</TD> -->
- ???<BR>??</TD>
- <!-- <TD>This morx subtable allows a string of glyphs to be inserted before or
- after the current glyph (the current glyph always remains). This sub-table
- is contextual (ie. the insertion can be restricted to certain contexts).
- It bears some similarities to the GSUB Multiple subtable above.</TD> -->
- <TD>?? morx ?????????????????????????????????????? (?????????????????)???????????????? (??????????????????????????????)?????? GPOS ???????????????????????</TD>
- </TR>
- <TR>
- <!-- <TD VALIGN="Top">Alternate</TD> -->
- <TD VALIGN="Top">???</TD>
- <TD></TD>
- <!-- <TD>This GSUB subtable allows a single glyph to be replaced by any one of
- several alternatives (presumably with help from a word processor's UI). An
- example of this would be a character which had several swash variants. There
- is nothing like this in the 'morx' table.</TD>-->
- <TD>?? GSUB ???????????1 ???????????????? (???????????????? UI ???????) ??? 1 ?????????????????????????????????????????‘morx’???????????????????????</TD>
- </TR>
- <TR>
- <TD VALIGN="Top"><P ALIGN=Center>
- <!-- Ligature</TD> -->
- ??</TD>
- <TD VALIGN="Top"><P ALIGN=Center>
- <!-- Ligature</TD> -->
- ??</TD>
- <!-- <TD>Both formats have ligature sub-tables. The 'GSUB' version is unconditional
- (the ligature is always applied -- though a ligature substitution could be
- embedded in an OpenType contextual substitution to make it condtional). The
- 'morx' version can be contextual (though in fonts I have examined it is usually
- uncontextual). FontForge only supports unconditional ligatures. -->
- <TD>???????????????????????????‘GSUB’?????????????? (?????????????????? OpenType ???????????????????????????????)?‘morx’???????????????????? (??????????????????????????)?FontForge ??????????????????????
- <P>
- <!-- FontForge can read all the unconditional ligatures from a 'morx' sub-table.
- FontForge loses all contextual ligatures. -->
- FontForge ??????????????‘morx’????????????????????FontForge ?????????????????????
- <P>
- <!-- In OpenType, contextual ligatures can be built by wrapping a ligature sub-table
- inside a Context or Chaining Context subtable.</TD> -->
- OpenType ???????????????????????????????????????????????????????????</TD>
- </TR>
- <TR>
- <TD></TD>
- <TD VALIGN="Top"><P ALIGN=Center>
- <!-- Contextual<BR>
- Glyph</TD> -->
- ?????<BR>???</TD>
- <!-- <TD>This morx subtable allows single glyph substitutions to be applied within
- certain contexts. At first glance it seems that this could be converted into
- an opentype Context subtable, <A HREF="gposgsub.html#sometimes">but this
- is rarely the case</A>.</TD>-->
- <TD>?? morx ??????????????????????????????????????????????? OpenType ???????????????????????????????<A HREF="gposgsub.html#sometimes">???????????????????????</TD>
- </TR>
- <TR>
- <TD><P ALIGN=Center>
- <!-- Context</TD> -->
- ????</TD>
- <TD></TD>
- <!-- <TD ROWSPAN="2" VALIGN="Top">These GSUB subtables allow any collection of
- other substitutions to be applied contextually. At first glance one might
- think that these (with appropriate nested substitutions) might be converted
- to 'morx' contextual glyph substitutions, contextual ligatures, or even glyph
- insertion. <A HREF="gposgsub.html#sometimes">Unfortunately this is rarely
- the case</A>.</TD> -->
- <TD ROWSPAN="2" VALIGN="Top">???? GSUB ??????????????????????????????????????????? (??????????????) ??????????‘morx’???????????????????????????????????????????????????<A HREF="gposgsub.html#sometimes">???????????????????????</A>
- </TR>
- <TR>
- <TD><P ALIGN=Center>
- <!-- Chaining<BR>
- Context</TD> -->
- ???<BR>????</TD>
- <TD></TD>
- </TR>
- <TR VALIGN="Top">
- <TD><P ALIGN=Center>
- <!-- Reverse<BR>
- Chaining<BR>
- Context</TD> -->
- ???<BR>???<BR>????</TD>
- <TD></TD>
- <!-- <TD>This GSUB subtable is applied backwards to the stream of glyphs, it allows
- a single glyph substitution per contextual match. There is nothing like it
- in 'morx'.</TD> -->
- <TD>?? GSUB ????????????????????????????????????????????????????? 1 ???????????‘morx’?????????????????</TD>
- </TR>
- <TR VALIGN="Top">
- <TD></TD>
- <TD><P ALIGN=Center>
- <!-- Indic<BR>
- Rearrange-<BR>
- ment</TD> -->
- ????<BR>???<BR>???</TD>
- <!-- <TD>This‘morx’subtable allows for several glyphs to interchange their positions
- in the glyph stream. There is nothing like it in GSUB (or GPOS for that matter).</TD>-->
- <TD>??‘morx’??????????????????????????????????????????????? GSUB ?? (??? GPOS ??) ???????????????</TD>
- </TR>
- </TABLE>
- <H4>
- <!-- Why do contextual glyph substitutions only <A NAME="sometimes">sometimes</A>
- get generated in AAT? -->
- ?????????????<A NAME="sometimes">???</A>?? AAT ??????????
- </H4>
- <P>
- <!--
- Sadly OpenType and AAT provide disjoint capabilities when it comes to contextual
- matching. AAT is more capable in some areas, OpenType more capable in others.
- FontForge is able to convert an OpenType contextual substitution into an
- AAT one if FontForge can detect that the OpenType substitution does not use
- capabilities beyond those of AAT. Currently this means: -->
- ?????????OpenType ? AAT ?????????????????????????????????????????? AAT ???????????????? OpenType ???????????FontForge ? OpenType ???????? AAT ??????????????????? OpenType ??? AAT ???????????????????? FontForge ??????????????????????????????????????????????:
- <UL>
- <LI>
- <!-- There is an apple feature which matches the otf tag-->
- ?? OTF ??????? Apple ????????
- <LI>
- <!-- And one of the following is true:-->
- ???????????? 1 ?????:
- <OL>
- <LI>
- <!-- Either -->
- ??????????????????:
- <UL>
- <LI>
- <!-- The sub-table is in coverage format -->
- ????????????????????????????
- <LI>
- <!-- The sub-table contains either exactly one nested single glyph replacement
- substitution, or<BR> -->
- ????????????? 1 ??????????????????????????<BR>
- <!-- it contains exactly two single glyph replacements and one of them refers
- to the last glyph matched (and the other does not) -->
- ???? 2 ??????????????????????? 1 ???????????????????? (?????? 1 ????????????)
- </UL>
- <LI>
- <!-- or -->
- ?????????
- <UL>
- <LI>
- <!-- The sub-table is in either glyph or class format -->
- ????????????????????????????????????
- <LI>
- <!-- If in class format then either the backtrack and lookahead classes must be
- the same as the main class, or they must not be used. -->
- ????????????????????????????????????????????????????????????????????????
- <LI>
- <!-- If a rule has a substitution at a given glyph position, then all rules which
- match the current rule up to that glyph position must also have a substitution
- at that position. -->
- ????????????????????????????????????????????????????????????????????????????????????
- <LI>
- <!-- A rule with exactly one substitution is acceptable<BR>
- A rule…
Large files files are truncated, but you can click here to view the full file