[autofit] Add support for Arabic script.

Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!

* src/autofit/afblue.dat: Add blue zone data for Arabic.

* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Arabic standard characters.

* src/autofit/afranges.c: Add Arabic data.

* src/autofit/afstyles.h: Add Arabic data.

* docs/CHANGES: Document it.
This commit is contained in:
Werner Lemberg 2015-03-11 16:45:58 +01:00
parent a451638ec5
commit d3284462c3
8 changed files with 103 additions and 39 deletions

View File

@ -1,3 +1,21 @@
2015-03-11 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Arabic script.
Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
* src/autofit/afblue.dat: Add blue zone data for Arabic.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Arabic standard characters.
* src/autofit/afranges.c: Add Arabic data.
* src/autofit/afstyles.h: Add Arabic data.
* docs/CHANGES: Document it.
2015-03-11 Werner Lemberg <wl@gnu.org>
Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.

View File

@ -23,6 +23,8 @@ CHANGES BETWEEN 2.5.5 and 2.6
- Thai script support has been added to the auto-hinter.
- Arabic script support has been added to the auto-hinter.
III. MISCELLANEOUS

View File

@ -26,6 +26,10 @@
af_blue_strings[] =
{
/* */
'\xD8', '\xA7', '\xD8', '\xA5', '\xD9', '\x84', '\xD9', '\x83', '\xD8', '\xB7', '\xD8', '\xB8', /* ا إ ل ك ط ظ */
'\0',
'\xD8', '\xAA', '\xD8', '\xAB', '\xD8', '\xB7', '\xD8', '\xB8', '\xD9', '\x83', /* ت ث ط ظ ك */
'\0',
'\xD0', '\x91', '\xD0', '\x92', '\xD0', '\x95', '\xD0', '\x9F', '\xD0', '\x97', '\xD0', '\x9E', '\xD0', '\xA1', '\xD0', '\xAD', /* БВЕПЗОСЭ */
'\0',
'\xD0', '\x91', '\xD0', '\x92', '\xD0', '\x95', '\xD0', '\xA8', '\xD0', '\x97', '\xD0', '\x9E', '\xD0', '\xA1', '\xD0', '\xAD', /* БВЕШЗОСЭ */
@ -135,6 +139,9 @@
af_blue_stringsets[] =
{
/* */
{ AF_BLUE_STRING_ARABIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
{ AF_BLUE_STRING_ARABIC_JOIN, 0 },
{ AF_BLUE_STRING_MAX, 0 },
{ AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
{ AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM, 0 },
{ AF_BLUE_STRING_CYRILLIC_SMALL, AF_BLUE_PROPERTY_LATIN_TOP |

View File

@ -67,6 +67,11 @@
AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
AF_BLUE_STRING_ARABIC_TOP
"ا إ ل ك ط ظ"
AF_BLUE_STRING_ARABIC_JOIN
"ت ث ط ظ ك"
AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP
"БВЕПЗОСЭ"
AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM
@ -283,6 +288,11 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
AF_BLUE_STRINGSET_ARAB
{ AF_BLUE_STRING_ARABIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
{ AF_BLUE_STRING_ARABIC_JOIN, 0 }
{ AF_BLUE_STRING_MAX, 0 }
AF_BLUE_STRINGSET_CYRL
{ AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
{ AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM, 0 }

View File

@ -74,37 +74,39 @@ FT_BEGIN_HEADER
typedef enum AF_Blue_String_
{
AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 0,
AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 17,
AF_BLUE_STRING_CYRILLIC_SMALL = 34,
AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 51,
AF_BLUE_STRING_DEVANAGARI_BASE = 58,
AF_BLUE_STRING_DEVANAGARI_TOP = 83,
AF_BLUE_STRING_DEVANAGARI_HEAD = 108,
AF_BLUE_STRING_DEVANAGARI_BOTTOM = 133,
AF_BLUE_STRING_GREEK_CAPITAL_TOP = 140,
AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 155,
AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 168,
AF_BLUE_STRING_GREEK_SMALL = 181,
AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 198,
AF_BLUE_STRING_HEBREW_TOP = 215,
AF_BLUE_STRING_HEBREW_BOTTOM = 232,
AF_BLUE_STRING_HEBREW_DESCENDER = 245,
AF_BLUE_STRING_LATIN_CAPITAL_TOP = 256,
AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 265,
AF_BLUE_STRING_LATIN_SMALL_F_TOP = 274,
AF_BLUE_STRING_LATIN_SMALL = 282,
AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 290,
AF_BLUE_STRING_TELUGU_TOP = 296,
AF_BLUE_STRING_TELUGU_BOTTOM = 318,
AF_BLUE_STRING_THAI_TOP = 340,
AF_BLUE_STRING_THAI_BOTTOM = 359,
AF_BLUE_STRING_THAI_ASCENDER = 381,
AF_BLUE_STRING_THAI_LARGE_ASCENDER = 391,
AF_BLUE_STRING_THAI_DESCENDER = 401,
AF_BLUE_STRING_THAI_LARGE_DESCENDER = 414,
AF_BLUE_STRING_THAI_DIGIT_TOP = 421,
af_blue_1_1 = 430,
AF_BLUE_STRING_ARABIC_TOP = 0,
AF_BLUE_STRING_ARABIC_JOIN = 13,
AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 24,
AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 41,
AF_BLUE_STRING_CYRILLIC_SMALL = 58,
AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 75,
AF_BLUE_STRING_DEVANAGARI_BASE = 82,
AF_BLUE_STRING_DEVANAGARI_TOP = 107,
AF_BLUE_STRING_DEVANAGARI_HEAD = 132,
AF_BLUE_STRING_DEVANAGARI_BOTTOM = 157,
AF_BLUE_STRING_GREEK_CAPITAL_TOP = 164,
AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 179,
AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 192,
AF_BLUE_STRING_GREEK_SMALL = 205,
AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 222,
AF_BLUE_STRING_HEBREW_TOP = 239,
AF_BLUE_STRING_HEBREW_BOTTOM = 256,
AF_BLUE_STRING_HEBREW_DESCENDER = 269,
AF_BLUE_STRING_LATIN_CAPITAL_TOP = 280,
AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 289,
AF_BLUE_STRING_LATIN_SMALL_F_TOP = 298,
AF_BLUE_STRING_LATIN_SMALL = 306,
AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 314,
AF_BLUE_STRING_TELUGU_TOP = 320,
AF_BLUE_STRING_TELUGU_BOTTOM = 342,
AF_BLUE_STRING_THAI_TOP = 364,
AF_BLUE_STRING_THAI_BOTTOM = 383,
AF_BLUE_STRING_THAI_ASCENDER = 405,
AF_BLUE_STRING_THAI_LARGE_ASCENDER = 415,
AF_BLUE_STRING_THAI_DESCENDER = 425,
AF_BLUE_STRING_THAI_LARGE_DESCENDER = 438,
AF_BLUE_STRING_THAI_DIGIT_TOP = 445,
af_blue_1_1 = 454,
#ifdef AF_CONFIG_OPTION_CJK
AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1,
AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 153,
@ -162,14 +164,15 @@ FT_BEGIN_HEADER
typedef enum AF_Blue_Stringset_
{
AF_BLUE_STRINGSET_CYRL = 0,
AF_BLUE_STRINGSET_DEVA = 6,
AF_BLUE_STRINGSET_GREK = 12,
AF_BLUE_STRINGSET_HEBR = 19,
AF_BLUE_STRINGSET_LATN = 23,
AF_BLUE_STRINGSET_TELU = 30,
AF_BLUE_STRINGSET_THAI = 33,
af_blue_2_1 = 41,
AF_BLUE_STRINGSET_ARAB = 0,
AF_BLUE_STRINGSET_CYRL = 3,
AF_BLUE_STRINGSET_DEVA = 9,
AF_BLUE_STRINGSET_GREK = 15,
AF_BLUE_STRINGSET_HEBR = 22,
AF_BLUE_STRINGSET_LATN = 26,
AF_BLUE_STRINGSET_TELU = 33,
AF_BLUE_STRINGSET_THAI = 36,
af_blue_2_1 = 44,
#ifdef AF_CONFIG_OPTION_CJK
AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
af_blue_2_1_1 = af_blue_2_1 + 2,

View File

@ -19,6 +19,17 @@
#include "afranges.h"
const AF_Script_UniRangeRec af_arab_uniranges[] =
{
AF_UNIRANGE_REC( 0x0600UL, 0x06FFUL ), /* Arabic */
AF_UNIRANGE_REC( 0x0750UL, 0x07FFUL ), /* Arabic Supplement */
AF_UNIRANGE_REC( 0x08A0UL, 0x08FFUL ), /* Arabic Extended-A */
AF_UNIRANGE_REC( 0xFB50UL, 0xFDFFUL ), /* Arabic Presentation Forms-A */
AF_UNIRANGE_REC( 0xFE70UL, 0xFEFFUL ), /* Arabic Presentation Forms-B */
AF_UNIRANGE_REC( 0x1EE00UL, 0x1EEFFUL ), /* Arabic Mathematical Alphabetic Symbols */
AF_UNIRANGE_REC( 0UL, 0UL )
};
const AF_Script_UniRangeRec af_cyrl_uniranges[] =
{
AF_UNIRANGE_REC( 0x0400UL, 0x04FFUL ), /* Cyrillic */

View File

@ -26,6 +26,11 @@
/* script name tag, followed by a string of standard characters (to */
/* derive the standard width and height of stems). */
SCRIPT( arab, ARAB,
"Arabic",
HB_SCRIPT_ARABIC,
0x644, 0x62D, 0x640 ) /* ل ح ـ */
SCRIPT( cyrl, CYRL,
"Cyrillic",
HB_SCRIPT_CYRILLIC,

View File

@ -80,6 +80,14 @@
"default", \
DEFAULT )
STYLE( arab_dflt, ARAB_DFLT,
"Arabic default style",
AF_WRITING_SYSTEM_LATIN,
AF_SCRIPT_ARAB,
AF_BLUE_STRINGSET_ARAB,
AF_COVERAGE_DEFAULT )
META_STYLE_LATIN( cyrl, CYRL, "Cyrillic" )
META_STYLE_LATIN( grek, GREK, "Greek" )