mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 00:38:39 +09:00
Update in-tree freetype2 lib (unused) to 2.9.1
This commit is contained in:
parent
4070f2c744
commit
7ec8b4bf6f
713 changed files with 36231 additions and 44716 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# FreeType 2 src Jamfile
|
||||
#
|
||||
# Copyright 2001-2016 by
|
||||
# Copyright 2001-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# FreeType 2 src/autofit Jamfile
|
||||
#
|
||||
# Copyright 2003-2016 by
|
||||
# Copyright 2003-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
/* Routines used to compute vector angles with limited accuracy */
|
||||
/* and very high speed. It also contains sorting routines (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
/* */
|
||||
/* Auto-fitter data for blue strings (body). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -26,6 +26,14 @@
|
|||
af_blue_strings[] =
|
||||
{
|
||||
/* */
|
||||
'\xF0', '\x9E', '\xA4', '\x8C', ' ', '\xF0', '\x9E', '\xA4', '\x85', ' ', '\xF0', '\x9E', '\xA4', '\x88', ' ', '\xF0', '\x9E', '\xA4', '\x8F', ' ', '\xF0', '\x9E', '\xA4', '\x94', ' ', '\xF0', '\x9E', '\xA4', '\x9A', /* 𞤌 𞤅 𞤈 𞤏 𞤔 𞤚 */
|
||||
'\0',
|
||||
'\xF0', '\x9E', '\xA4', '\x82', ' ', '\xF0', '\x9E', '\xA4', '\x96', /* 𞤂 𞤖 */
|
||||
'\0',
|
||||
'\xF0', '\x9E', '\xA4', '\xAC', ' ', '\xF0', '\x9E', '\xA4', '\xAE', ' ', '\xF0', '\x9E', '\xA4', '\xBB', ' ', '\xF0', '\x9E', '\xA4', '\xBC', ' ', '\xF0', '\x9E', '\xA4', '\xBE', /* 𞤬 𞤮 𞤻 𞤼 𞤾 */
|
||||
'\0',
|
||||
'\xF0', '\x9E', '\xA4', '\xA4', ' ', '\xF0', '\x9E', '\xA4', '\xA8', ' ', '\xF0', '\x9E', '\xA4', '\xA9', ' ', '\xF0', '\x9E', '\xA4', '\xAD', ' ', '\xF0', '\x9E', '\xA4', '\xB4', ' ', '\xF0', '\x9E', '\xA4', '\xB8', ' ', '\xF0', '\x9E', '\xA4', '\xBA', ' ', '\xF0', '\x9E', '\xA5', '\x80', /* 𞤤 𞤨 𞤩 𞤭 𞤴 𞤸 𞤺 𞥀 */
|
||||
'\0',
|
||||
'\xD8', '\xA7', ' ', '\xD8', '\xA5', ' ', '\xD9', '\x84', ' ', '\xD9', '\x83', ' ', '\xD8', '\xB7', ' ', '\xD8', '\xB8', /* ا إ ل ك ط ظ */
|
||||
'\0',
|
||||
'\xD8', '\xAA', ' ', '\xD8', '\xAB', ' ', '\xD8', '\xB7', ' ', '\xD8', '\xB8', ' ', '\xD9', '\x83', /* ت ث ط ظ ك */
|
||||
|
|
@ -44,12 +52,50 @@
|
|||
'\0',
|
||||
'\xD5', '\xA2', ' ', '\xD5', '\xA8', ' ', '\xD5', '\xAB', ' ', '\xD5', '\xAC', ' ', '\xD5', '\xB2', ' ', '\xD5', '\xBA', ' ', '\xD6', '\x83', ' ', '\xD6', '\x81', /* բ ը ի լ ղ պ փ ց */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\xAC', '\x80', ' ', '\xF0', '\x90', '\xAC', '\x81', ' ', '\xF0', '\x90', '\xAC', '\x90', ' ', '\xF0', '\x90', '\xAC', '\x9B', /* 𐬀 𐬁 𐬐 𐬛 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\xAC', '\x80', ' ', '\xF0', '\x90', '\xAC', '\x81', /* 𐬀 𐬁 */
|
||||
'\0',
|
||||
'\xEA', '\x9A', '\xA7', ' ', '\xEA', '\x9A', '\xA8', ' ', '\xEA', '\x9B', '\x9B', ' ', '\xEA', '\x9B', '\x89', ' ', '\xEA', '\x9B', '\x81', ' ', '\xEA', '\x9B', '\x88', ' ', '\xEA', '\x9B', '\xAB', ' ', '\xEA', '\x9B', '\xAF', /* ꚧ ꚨ ꛛ ꛉ ꛁ ꛈ ꛫ ꛯ */
|
||||
'\0',
|
||||
'\xEA', '\x9A', '\xAD', ' ', '\xEA', '\x9A', '\xB3', ' ', '\xEA', '\x9A', '\xB6', ' ', '\xEA', '\x9B', '\xAC', ' ', '\xEA', '\x9A', '\xA2', ' ', '\xEA', '\x9A', '\xBD', ' ', '\xEA', '\x9B', '\xAF', ' ', '\xEA', '\x9B', '\xB2', /* ꚭ ꚳ ꚶ ꛬ ꚢ ꚽ ꛯ ꛲ */
|
||||
'\0',
|
||||
'\xE0', '\xA6', '\x85', ' ', '\xE0', '\xA6', '\xA1', ' ', '\xE0', '\xA6', '\xA4', ' ', '\xE0', '\xA6', '\xA8', ' ', '\xE0', '\xA6', '\xAC', ' ', '\xE0', '\xA6', '\xAD', ' ', '\xE0', '\xA6', '\xB2', ' ', '\xE0', '\xA6', '\x95', /* অ ড ত ন ব ভ ল ক */
|
||||
'\0',
|
||||
'\xE0', '\xA6', '\x87', ' ', '\xE0', '\xA6', '\x9F', ' ', '\xE0', '\xA6', '\xA0', ' ', '\xE0', '\xA6', '\xBF', ' ', '\xE0', '\xA7', '\x80', ' ', '\xE0', '\xA7', '\x88', ' ', '\xE0', '\xA7', '\x97', /* ই ট ঠ ি ী ৈ ৗ */
|
||||
'\0',
|
||||
'\xE0', '\xA6', '\x93', ' ', '\xE0', '\xA6', '\x8F', ' ', '\xE0', '\xA6', '\xA1', ' ', '\xE0', '\xA6', '\xA4', ' ', '\xE0', '\xA6', '\xA8', ' ', '\xE0', '\xA6', '\xAC', ' ', '\xE0', '\xA6', '\xB2', ' ', '\xE0', '\xA6', '\x95', /* ও এ ড ত ন ব ল ক */
|
||||
'\0',
|
||||
'\xE1', '\x9D', '\x90', ' ', '\xE1', '\x9D', '\x88', /* ᝐ ᝈ */
|
||||
'\0',
|
||||
'\xE1', '\x9D', '\x85', ' ', '\xE1', '\x9D', '\x8A', ' ', '\xE1', '\x9D', '\x8E', /* ᝅ ᝊ ᝎ */
|
||||
'\0',
|
||||
'\xE1', '\x9D', '\x82', ' ', '\xE1', '\x9D', '\x83', ' ', '\xE1', '\x9D', '\x89', ' ', '\xE1', '\x9D', '\x8C', /* ᝂ ᝃ ᝉ ᝌ */
|
||||
'\0',
|
||||
'\xE1', '\x9D', '\x80', ' ', '\xE1', '\x9D', '\x83', ' ', '\xE1', '\x9D', '\x86', ' ', '\xE1', '\x9D', '\x89', ' ', '\xE1', '\x9D', '\x8B', ' ', '\xE1', '\x9D', '\x8F', ' ', '\xE1', '\x9D', '\x91', /* ᝀ ᝃ ᝆ ᝉ ᝋ ᝏ ᝑ */
|
||||
'\0',
|
||||
'\xE1', '\x97', '\x9C', ' ', '\xE1', '\x96', '\xB4', ' ', '\xE1', '\x90', '\x81', ' ', '\xE1', '\x92', '\xA3', ' ', '\xE1', '\x91', '\xAB', ' ', '\xE1', '\x91', '\x8E', ' ', '\xE1', '\x94', '\x91', ' ', '\xE1', '\x97', '\xB0', /* ᗜ ᖴ ᐁ ᒣ ᑫ ᑎ ᔑ ᗰ */
|
||||
'\0',
|
||||
'\xE1', '\x97', '\xB6', ' ', '\xE1', '\x96', '\xB5', ' ', '\xE1', '\x92', '\xA7', ' ', '\xE1', '\x90', '\x83', ' ', '\xE1', '\x91', '\x8C', ' ', '\xE1', '\x92', '\x8D', ' ', '\xE1', '\x94', '\x91', ' ', '\xE1', '\x97', '\xA2', /* ᗶ ᖵ ᒧ ᐃ ᑌ ᒍ ᔑ ᗢ */
|
||||
'\0',
|
||||
'\xE1', '\x93', '\x93', ' ', '\xE1', '\x93', '\x95', ' ', '\xE1', '\x93', '\x80', ' ', '\xE1', '\x93', '\x82', ' ', '\xE1', '\x93', '\x84', ' ', '\xE1', '\x95', '\x84', ' ', '\xE1', '\x95', '\x86', ' ', '\xE1', '\x98', '\xA3', /* ᓓ ᓕ ᓀ ᓂ ᓄ ᕄ ᕆ ᘣ */
|
||||
'\0',
|
||||
'\xE1', '\x95', '\x83', ' ', '\xE1', '\x93', '\x82', ' ', '\xE1', '\x93', '\x80', ' ', '\xE1', '\x95', '\x82', ' ', '\xE1', '\x93', '\x97', ' ', '\xE1', '\x93', '\x9A', ' ', '\xE1', '\x95', '\x86', ' ', '\xE1', '\x98', '\xA3', /* ᕃ ᓂ ᓀ ᕂ ᓗ ᓚ ᕆ ᘣ */
|
||||
'\0',
|
||||
'\xE1', '\x90', '\xAA', ' ', '\xE1', '\x99', '\x86', ' ', '\xE1', '\xA3', '\x98', ' ', '\xE1', '\x90', '\xA2', ' ', '\xE1', '\x92', '\xBE', ' ', '\xE1', '\xA3', '\x97', ' ', '\xE1', '\x94', '\x86', /* ᐪ ᙆ ᣘ ᐢ ᒾ ᣗ ᔆ */
|
||||
'\0',
|
||||
'\xE1', '\x99', '\x86', ' ', '\xE1', '\x97', '\xAE', ' ', '\xE1', '\x92', '\xBB', ' ', '\xE1', '\x90', '\x9E', ' ', '\xE1', '\x94', '\x86', ' ', '\xE1', '\x92', '\xA1', ' ', '\xE1', '\x92', '\xA2', ' ', '\xE1', '\x93', '\x91', /* ᙆ ᗮ ᒻ ᐞ ᔆ ᒡ ᒢ ᓑ */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x8A', '\xA7', ' ', '\xF0', '\x90', '\x8A', '\xAB', ' ', '\xF0', '\x90', '\x8A', '\xAC', ' ', '\xF0', '\x90', '\x8A', '\xAD', ' ', '\xF0', '\x90', '\x8A', '\xB1', ' ', '\xF0', '\x90', '\x8A', '\xBA', ' ', '\xF0', '\x90', '\x8A', '\xBC', ' ', '\xF0', '\x90', '\x8A', '\xBF', /* 𐊧 𐊫 𐊬 𐊭 𐊱 𐊺 𐊼 𐊿 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x8A', '\xA3', ' ', '\xF0', '\x90', '\x8A', '\xA7', ' ', '\xF0', '\x90', '\x8A', '\xB7', ' ', '\xF0', '\x90', '\x8B', '\x80', ' ', '\xF0', '\x90', '\x8A', '\xAB', ' ', '\xF0', '\x90', '\x8A', '\xB8', ' ', '\xF0', '\x90', '\x8B', '\x89', /* 𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉 */
|
||||
'\0',
|
||||
'\xF0', '\x91', '\x84', '\x83', ' ', '\xF0', '\x91', '\x84', '\x85', ' ', '\xF0', '\x91', '\x84', '\x89', ' ', '\xF0', '\x91', '\x84', '\x99', ' ', '\xF0', '\x91', '\x84', '\x97', /* 𑄃 𑄅 𑄉 𑄙 𑄗 */
|
||||
'\0',
|
||||
'\xF0', '\x91', '\x84', '\x85', ' ', '\xF0', '\x91', '\x84', '\x9B', ' ', '\xF0', '\x91', '\x84', '\x9D', ' ', '\xF0', '\x91', '\x84', '\x97', ' ', '\xF0', '\x91', '\x84', '\x93', /* 𑄅 𑄛 𑄝 𑄗 𑄓 */
|
||||
'\0',
|
||||
'\xF0', '\x91', '\x84', '\x96', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\x98', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\x99', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\xA4', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\xA5', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', /* 𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢 */
|
||||
'\0',
|
||||
'\xE1', '\x8F', '\x86', ' ', '\xE1', '\x8E', '\xBB', ' ', '\xE1', '\x8E', '\xAC', ' ', '\xE1', '\x8F', '\x83', ' ', '\xE1', '\x8E', '\xA4', ' ', '\xE1', '\x8F', '\xA3', ' ', '\xE1', '\x8E', '\xA6', ' ', '\xE1', '\x8F', '\x95', /* Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ */
|
||||
'\0',
|
||||
'\xEA', '\xAE', '\x92', ' ', '\xEA', '\xAE', '\xA4', ' ', '\xEA', '\xAE', '\xB6', ' ', '\xEA', '\xAD', '\xB4', ' ', '\xEA', '\xAD', '\xBE', ' ', '\xEA', '\xAE', '\x97', ' ', '\xEA', '\xAE', '\x9D', ' ', '\xEA', '\xAE', '\xBF', /* ꮒ ꮤ ꮶ ꭴ ꭾ ꮗ ꮝ ꮿ */
|
||||
|
|
@ -58,6 +104,20 @@
|
|||
'\0',
|
||||
'\xE1', '\x8F', '\xB8', ' ', '\xEA', '\xAE', '\x90', ' ', '\xEA', '\xAD', '\xB9', ' ', '\xEA', '\xAD', '\xBB', /* ᏸ ꮐ ꭹ ꭻ */
|
||||
'\0',
|
||||
'\xE2', '\xB2', '\x8C', ' ', '\xE2', '\xB2', '\x8E', ' ', '\xE2', '\xB2', '\xA0', ' ', '\xE2', '\xB3', '\x9E', ' ', '\xE2', '\xB2', '\x9E', ' ', '\xE2', '\xB2', '\x90', ' ', '\xE2', '\xB2', '\xA4', ' ', '\xE2', '\xB3', '\x8A', /* Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ */
|
||||
'\0',
|
||||
'\xE2', '\xB3', '\x90', ' ', '\xE2', '\xB3', '\x98', ' ', '\xE2', '\xB3', '\x9E', ' ', '\xE2', '\xB2', '\x8E', ' ', '\xE2', '\xB2', '\x9E', ' ', '\xE2', '\xB2', '\x90', ' ', '\xE2', '\xB3', '\x9C', ' ', '\xE2', '\xB2', '\xB0', /* Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ */
|
||||
'\0',
|
||||
'\xE2', '\xB2', '\x8D', ' ', '\xE2', '\xB2', '\x8F', ' ', '\xE2', '\xB2', '\xA1', ' ', '\xE2', '\xB3', '\x9F', ' ', '\xE2', '\xB2', '\x9F', ' ', '\xE2', '\xB2', '\x91', ' ', '\xE2', '\xB2', '\xA5', ' ', '\xE2', '\xB3', '\x8B', /* ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ */
|
||||
'\0',
|
||||
'\xE2', '\xB3', '\x91', ' ', '\xE2', '\xB3', '\x99', ' ', '\xE2', '\xB3', '\x9F', ' ', '\xE2', '\xB2', '\x8F', ' ', '\xE2', '\xB2', '\x9F', ' ', '\xE2', '\xB2', '\x91', ' ', '\xE2', '\xB3', '\x9D', ' ', '\xE2', '\xB3', '\x92', /* ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\xA0', '\x8D', ' ', '\xF0', '\x90', '\xA0', '\x99', ' ', '\xF0', '\x90', '\xA0', '\xB3', ' ', '\xF0', '\x90', '\xA0', '\xB1', ' ', '\xF0', '\x90', '\xA0', '\x85', ' ', '\xF0', '\x90', '\xA0', '\x93', ' ', '\xF0', '\x90', '\xA0', '\xA3', ' ', '\xF0', '\x90', '\xA0', '\xA6', /* 𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\xA0', '\x83', ' ', '\xF0', '\x90', '\xA0', '\x8A', ' ', '\xF0', '\x90', '\xA0', '\x9B', ' ', '\xF0', '\x90', '\xA0', '\xA3', ' ', '\xF0', '\x90', '\xA0', '\xB3', ' ', '\xF0', '\x90', '\xA0', '\xB5', ' ', '\xF0', '\x90', '\xA0', '\x90', /* 𐠃 𐠊 𐠛 𐠣 𐠳 𐠵 𐠐 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\xA0', '\x88', ' ', '\xF0', '\x90', '\xA0', '\x8F', ' ', '\xF0', '\x90', '\xA0', '\x96', /* 𐠈 𐠏 𐠖 */
|
||||
'\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', /* Б В Е Ш З О С Э */
|
||||
|
|
@ -66,6 +126,14 @@
|
|||
'\0',
|
||||
'\xD1', '\x80', ' ', '\xD1', '\x83', ' ', '\xD1', '\x84', /* р у ф */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x90', '\x82', ' ', '\xF0', '\x90', '\x90', '\x84', ' ', '\xF0', '\x90', '\x90', '\x8B', ' ', '\xF0', '\x90', '\x90', '\x97', ' ', '\xF0', '\x90', '\x90', '\x91', /* 𐐂 𐐄 𐐋 𐐗 𐐑 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x90', '\x80', ' ', '\xF0', '\x90', '\x90', '\x82', ' ', '\xF0', '\x90', '\x90', '\x84', ' ', '\xF0', '\x90', '\x90', '\x97', ' ', '\xF0', '\x90', '\x90', '\x9B', /* 𐐀 𐐂 𐐄 𐐗 𐐛 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x90', '\xAA', ' ', '\xF0', '\x90', '\x90', '\xAC', ' ', '\xF0', '\x90', '\x90', '\xB3', ' ', '\xF0', '\x90', '\x90', '\xBF', ' ', '\xF0', '\x90', '\x90', '\xB9', /* 𐐪 𐐬 𐐳 𐐿 𐐹 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x90', '\xA8', ' ', '\xF0', '\x90', '\x90', '\xAA', ' ', '\xF0', '\x90', '\x90', '\xAC', ' ', '\xF0', '\x90', '\x90', '\xBF', ' ', '\xF0', '\x90', '\x91', '\x83', /* 𐐨 𐐪 𐐬 𐐿 𐑃 */
|
||||
'\0',
|
||||
'\xE0', '\xA4', '\x95', ' ', '\xE0', '\xA4', '\xAE', ' ', '\xE0', '\xA4', '\x85', ' ', '\xE0', '\xA4', '\x86', ' ', '\xE0', '\xA4', '\xA5', ' ', '\xE0', '\xA4', '\xA7', ' ', '\xE0', '\xA4', '\xAD', ' ', '\xE0', '\xA4', '\xB6', /* क म अ आ थ ध भ श */
|
||||
'\0',
|
||||
'\xE0', '\xA4', '\x88', ' ', '\xE0', '\xA4', '\x90', ' ', '\xE0', '\xA4', '\x93', ' ', '\xE0', '\xA4', '\x94', ' ', '\xE0', '\xA4', '\xBF', ' ', '\xE0', '\xA5', '\x80', ' ', '\xE0', '\xA5', '\x8B', ' ', '\xE0', '\xA5', '\x8C', /* ई ऐ ओ औ ि ी ो ौ */
|
||||
|
|
@ -98,6 +166,22 @@
|
|||
'\0',
|
||||
'\xE2', '\xB4', '\x84', ' ', '\xE2', '\xB4', '\x85', ' ', '\xE2', '\xB4', '\x94', ' ', '\xE2', '\xB4', '\x95', ' ', '\xE2', '\xB4', '\x81', ' ', '\xE2', '\xB4', '\x82', ' ', '\xE2', '\xB4', '\x98', ' ', '\xE2', '\xB4', '\x9D', /* ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ */
|
||||
'\0',
|
||||
'\xE1', '\xB2', '\x9C', ' ', '\xE1', '\xB2', '\x9F', ' ', '\xE1', '\xB2', '\xB3', ' ', '\xE1', '\xB2', '\xB8', ' ', '\xE1', '\xB2', '\x92', ' ', '\xE1', '\xB2', '\x94', ' ', '\xE1', '\xB2', '\x9D', ' ', '\xE1', '\xB2', '\xB4', /* Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ */
|
||||
'\0',
|
||||
'\xE1', '\xB2', '\x98', ' ', '\xE1', '\xB2', '\xB2', ' ', '\xE1', '\xB2', '\x9D', ' ', '\xE1', '\xB2', '\xA9', ' ', '\xE1', '\xB2', '\x9B', ' ', '\xE1', '\xB2', '\xA8', ' ', '\xE1', '\xB2', '\xAF', ' ', '\xE1', '\xB2', '\xBD', /* Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ */
|
||||
'\0',
|
||||
'\xE2', '\xB0', '\x85', ' ', '\xE2', '\xB0', '\x94', ' ', '\xE2', '\xB0', '\xAA', ' ', '\xE2', '\xB0', '\x84', ' ', '\xE2', '\xB0', '\x82', ' ', '\xE2', '\xB0', '\x8A', ' ', '\xE2', '\xB0', '\xAB', ' ', '\xE2', '\xB0', '\x8B', /* Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ */
|
||||
'\0',
|
||||
'\xE2', '\xB0', '\x85', ' ', '\xE2', '\xB0', '\x84', ' ', '\xE2', '\xB0', '\x82', ' ', '\xE2', '\xB0', '\xAA', ' ', '\xE2', '\xB0', '\x9E', ' ', '\xE2', '\xB0', '\xA1', ' ', '\xE2', '\xB0', '\x8A', ' ', '\xE2', '\xB0', '\x94', /* Ⰵ Ⰴ Ⰲ Ⱚ Ⱎ Ⱑ Ⰺ Ⱄ */
|
||||
'\0',
|
||||
'\xE2', '\xB0', '\xB5', ' ', '\xE2', '\xB1', '\x84', ' ', '\xE2', '\xB1', '\x9A', ' ', '\xE2', '\xB0', '\xB4', ' ', '\xE2', '\xB0', '\xB2', ' ', '\xE2', '\xB0', '\xBA', ' ', '\xE2', '\xB1', '\x9B', ' ', '\xE2', '\xB0', '\xBB', /* ⰵ ⱄ ⱚ ⰴ ⰲ ⰺ ⱛ ⰻ */
|
||||
'\0',
|
||||
'\xE2', '\xB0', '\xB5', ' ', '\xE2', '\xB0', '\xB4', ' ', '\xE2', '\xB0', '\xB2', ' ', '\xE2', '\xB1', '\x9A', ' ', '\xE2', '\xB1', '\x8E', ' ', '\xE2', '\xB1', '\x91', ' ', '\xE2', '\xB0', '\xBA', ' ', '\xE2', '\xB1', '\x84', /* ⰵ ⰴ ⰲ ⱚ ⱎ ⱑ ⰺ ⱄ */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x8C', '\xB2', ' ', '\xF0', '\x90', '\x8C', '\xB6', ' ', '\xF0', '\x90', '\x8D', '\x80', ' ', '\xF0', '\x90', '\x8D', '\x84', ' ', '\xF0', '\x90', '\x8C', '\xB4', ' ', '\xF0', '\x90', '\x8D', '\x83', ' ', '\xF0', '\x90', '\x8D', '\x88', ' ', '\xF0', '\x90', '\x8C', '\xBE', /* 𐌲 𐌶 𐍀 𐍄 𐌴 𐍃 𐍈 𐌾 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x8C', '\xB6', ' ', '\xF0', '\x90', '\x8C', '\xB4', ' ', '\xF0', '\x90', '\x8D', '\x83', ' ', '\xF0', '\x90', '\x8D', '\x88', /* 𐌶 𐌴 𐍃 𐍈 */
|
||||
'\0',
|
||||
'\xCE', '\x93', ' ', '\xCE', '\x92', ' ', '\xCE', '\x95', ' ', '\xCE', '\x96', ' ', '\xCE', '\x98', ' ', '\xCE', '\x9F', ' ', '\xCE', '\xA9', /* Γ Β Ε Ζ Θ Ο Ω */
|
||||
'\0',
|
||||
'\xCE', '\x92', ' ', '\xCE', '\x94', ' ', '\xCE', '\x96', ' ', '\xCE', '\x9E', ' ', '\xCE', '\x98', ' ', '\xCE', '\x9F', /* Β Δ Ζ Ξ Θ Ο */
|
||||
|
|
@ -138,6 +222,16 @@
|
|||
'\0',
|
||||
'\xE0', '\xB2', '\x85', ' ', '\xE0', '\xB2', '\x89', ' ', '\xE0', '\xB2', '\x8E', ' ', '\xE0', '\xB2', '\xB2', ' ', '\xE0', '\xB3', '\xA6', ' ', '\xE0', '\xB3', '\xA8', ' ', '\xE0', '\xB3', '\xAC', ' ', '\xE0', '\xB3', '\xAD', /* ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭ */
|
||||
'\0',
|
||||
'\xEA', '\xA4', '\x85', ' ', '\xEA', '\xA4', '\x8F', ' ', '\xEA', '\xA4', '\x81', ' ', '\xEA', '\xA4', '\x8B', ' ', '\xEA', '\xA4', '\x80', ' ', '\xEA', '\xA4', '\x8D', /* ꤅ ꤏ ꤁ ꤋ ꤀ ꤍ */
|
||||
'\0',
|
||||
'\xEA', '\xA4', '\x88', ' ', '\xEA', '\xA4', '\x98', ' ', '\xEA', '\xA4', '\x80', ' ', '\xEA', '\xA4', '\x8D', ' ', '\xEA', '\xA4', '\xA2', /* ꤈ ꤘ ꤀ ꤍ ꤢ */
|
||||
'\0',
|
||||
'\xEA', '\xA4', '\x96', ' ', '\xEA', '\xA4', '\xA1', /* ꤖ ꤡ */
|
||||
'\0',
|
||||
'\xEA', '\xA4', '\x91', ' ', '\xEA', '\xA4', '\x9C', ' ', '\xEA', '\xA4', '\x9E', /* ꤑ ꤜ ꤞ */
|
||||
'\0',
|
||||
'\xEA', '\xA4', '\x91', '\xEA', '\xA4', '\xAC', ' ', '\xEA', '\xA4', '\x9C', '\xEA', '\xA4', '\xAD', ' ', '\xEA', '\xA4', '\x94', '\xEA', '\xA4', '\xAC', /* ꤑ꤬ ꤜ꤭ ꤔ꤬ */
|
||||
'\0',
|
||||
'\xE1', '\x9E', '\x81', ' ', '\xE1', '\x9E', '\x91', ' ', '\xE1', '\x9E', '\x93', ' ', '\xE1', '\x9E', '\xA7', ' ', '\xE1', '\x9E', '\xA9', ' ', '\xE1', '\x9E', '\xB6', /* ខ ទ ន ឧ ឩ ា */
|
||||
'\0',
|
||||
'\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x80', ' ', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x81', ' ', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x82', ' ', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x90', /* ក្ក ក្ខ ក្គ ក្ថ */
|
||||
|
|
@ -168,7 +262,9 @@
|
|||
'\0',
|
||||
'f', ' ', 'i', ' ', 'j', ' ', 'k', ' ', 'd', ' ', 'b', ' ', 'h', /* f i j k d b h */
|
||||
'\0',
|
||||
'x', ' ', 'z', ' ', 'r', ' ', 'o', ' ', 'e', ' ', 's', ' ', 'c', /* x z r o e s c */
|
||||
'u', ' ', 'v', ' ', 'x', ' ', 'z', ' ', 'o', ' ', 'e', ' ', 's', ' ', 'c', /* u v x z o e s c */
|
||||
'\0',
|
||||
'n', ' ', 'r', ' ', 'x', ' ', 'z', ' ', 'o', ' ', 'e', ' ', 's', ' ', 'c', /* n r x z o e s c */
|
||||
'\0',
|
||||
'p', ' ', 'q', ' ', 'g', ' ', 'j', ' ', 'y', /* p q g j y */
|
||||
'\0',
|
||||
|
|
@ -192,6 +288,10 @@
|
|||
'\0',
|
||||
'\xE1', '\xB5', '\x96', ' ', '\xCA', '\xB8', ' ', '\xE1', '\xB5', '\x8D', /* ᵖ ʸ ᵍ */
|
||||
'\0',
|
||||
'\xEA', '\x93', '\xA1', ' ', '\xEA', '\x93', '\xA7', ' ', '\xEA', '\x93', '\xB1', ' ', '\xEA', '\x93', '\xB6', ' ', '\xEA', '\x93', '\xA9', ' ', '\xEA', '\x93', '\x9A', ' ', '\xEA', '\x93', '\xB5', ' ', '\xEA', '\x93', '\xB3', /* ꓡ ꓧ ꓱ ꓶ ꓩ ꓚ ꓵ ꓳ */
|
||||
'\0',
|
||||
'\xEA', '\x93', '\x95', ' ', '\xEA', '\x93', '\x9C', ' ', '\xEA', '\x93', '\x9E', ' ', '\xEA', '\x93', '\xA1', ' ', '\xEA', '\x93', '\x9B', ' ', '\xEA', '\x93', '\xA2', ' ', '\xEA', '\x93', '\xB3', ' ', '\xEA', '\x93', '\xB4', /* ꓕ ꓜ ꓞ ꓡ ꓛ ꓢ ꓳ ꓴ */
|
||||
'\0',
|
||||
'\xE0', '\xB4', '\x92', ' ', '\xE0', '\xB4', '\x9F', ' ', '\xE0', '\xB4', '\xA0', ' ', '\xE0', '\xB4', '\xB1', ' ', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xAA', ' ', '\xE0', '\xB4', '\x9A', '\xE0', '\xB5', '\x8D', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xAA', '\xE0', '\xB5', '\x8D', '\xE0', '\xB4', '\xAA', /* ഒ ട ഠ റ ച പ ച്ച പ്പ */
|
||||
'\0',
|
||||
'\xE0', '\xB4', '\x9F', ' ', '\xE0', '\xB4', '\xA0', ' ', '\xE0', '\xB4', '\xA7', ' ', '\xE0', '\xB4', '\xB6', ' ', '\xE0', '\xB4', '\x98', ' ', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xA5', ' ', '\xE0', '\xB4', '\xB2', /* ട ഠ ധ ശ ഘ ച ഥ ല */
|
||||
|
|
@ -204,12 +304,68 @@
|
|||
'\0',
|
||||
'\xE1', '\x80', '\x89', ' ', '\xE1', '\x80', '\x8A', ' ', '\xE1', '\x80', '\xA5', ' ', '\xE1', '\x80', '\xA9', ' ', '\xE1', '\x80', '\xA8', ' ', '\xE1', '\x81', '\x82', ' ', '\xE1', '\x81', '\x85', ' ', '\xE1', '\x81', '\x89', /* ဉ ည ဥ ဩ ဨ ၂ ၅ ၉ */
|
||||
'\0',
|
||||
'\xDF', '\x90', ' ', '\xDF', '\x89', ' ', '\xDF', '\x92', ' ', '\xDF', '\x9F', ' ', '\xDF', '\x96', ' ', '\xDF', '\x9C', ' ', '\xDF', '\xA0', ' ', '\xDF', '\xA5', /* ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ */
|
||||
'\0',
|
||||
'\xDF', '\x80', ' ', '\xDF', '\x98', ' ', '\xDF', '\xA1', ' ', '\xDF', '\xA0', ' ', '\xDF', '\xA5', /* ߀ ߘ ߡ ߠ ߥ */
|
||||
'\0',
|
||||
'\xDF', '\x8F', ' ', '\xDF', '\x9B', ' ', '\xDF', '\x8B', /* ߏ ߛ ߋ */
|
||||
'\0',
|
||||
'\xDF', '\x8E', ' ', '\xDF', '\x8F', ' ', '\xDF', '\x9B', ' ', '\xDF', '\x8B', /* ߎ ߏ ߛ ߋ */
|
||||
'\0',
|
||||
'\xE1', '\xB1', '\x9B', ' ', '\xE1', '\xB1', '\x9C', ' ', '\xE1', '\xB1', '\x9D', ' ', '\xE1', '\xB1', '\xA1', ' ', '\xE1', '\xB1', '\xA2', ' ', '\xE1', '\xB1', '\xA5', /* ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\xB0', '\x97', ' ', '\xF0', '\x90', '\xB0', '\x98', ' ', '\xF0', '\x90', '\xB0', '\xA7', /* 𐰗 𐰘 𐰧 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\xB0', '\x89', ' ', '\xF0', '\x90', '\xB0', '\x97', ' ', '\xF0', '\x90', '\xB0', '\xA6', ' ', '\xF0', '\x90', '\xB0', '\xA7', /* 𐰉 𐰗 𐰦 𐰧 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x92', '\xBE', ' ', '\xF0', '\x90', '\x93', '\x8D', ' ', '\xF0', '\x90', '\x93', '\x92', ' ', '\xF0', '\x90', '\x93', '\x93', ' ', '\xF0', '\x90', '\x92', '\xBB', ' ', '\xF0', '\x90', '\x93', '\x82', ' ', '\xF0', '\x90', '\x92', '\xB5', ' ', '\xF0', '\x90', '\x93', '\x86', /* 𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x92', '\xB0', ' ', '\xF0', '\x90', '\x93', '\x8D', ' ', '\xF0', '\x90', '\x93', '\x82', ' ', '\xF0', '\x90', '\x92', '\xBF', ' ', '\xF0', '\x90', '\x93', '\x8E', ' ', '\xF0', '\x90', '\x92', '\xB9', /* 𐒰 𐓍 𐓂 𐒿 𐓎 𐒹 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x92', '\xBC', ' ', '\xF0', '\x90', '\x92', '\xBD', ' ', '\xF0', '\x90', '\x92', '\xBE', /* 𐒼 𐒽 𐒾 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x93', '\xB5', ' ', '\xF0', '\x90', '\x93', '\xB6', ' ', '\xF0', '\x90', '\x93', '\xBA', ' ', '\xF0', '\x90', '\x93', '\xBB', ' ', '\xF0', '\x90', '\x93', '\x9D', ' ', '\xF0', '\x90', '\x93', '\xA3', ' ', '\xF0', '\x90', '\x93', '\xAA', ' ', '\xF0', '\x90', '\x93', '\xAE', /* 𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x93', '\x98', ' ', '\xF0', '\x90', '\x93', '\x9A', ' ', '\xF0', '\x90', '\x93', '\xA3', ' ', '\xF0', '\x90', '\x93', '\xB5', ' ', '\xF0', '\x90', '\x93', '\xA1', ' ', '\xF0', '\x90', '\x93', '\xA7', ' ', '\xF0', '\x90', '\x93', '\xAA', ' ', '\xF0', '\x90', '\x93', '\xB6', /* 𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x93', '\xA4', ' ', '\xF0', '\x90', '\x93', '\xA6', ' ', '\xF0', '\x90', '\x93', '\xB8', ' ', '\xF0', '\x90', '\x93', '\xB9', ' ', '\xF0', '\x90', '\x93', '\x9B', /* 𐓤 𐓦 𐓸 𐓹 𐓛 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x93', '\xA4', ' ', '\xF0', '\x90', '\x93', '\xA5', ' ', '\xF0', '\x90', '\x93', '\xA6', /* 𐓤 𐓥 𐓦 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x92', '\x86', ' ', '\xF0', '\x90', '\x92', '\x89', ' ', '\xF0', '\x90', '\x92', '\x90', ' ', '\xF0', '\x90', '\x92', '\x92', ' ', '\xF0', '\x90', '\x92', '\x98', ' ', '\xF0', '\x90', '\x92', '\x9B', ' ', '\xF0', '\x90', '\x92', '\xA0', ' ', '\xF0', '\x90', '\x92', '\xA3', /* 𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x92', '\x80', ' ', '\xF0', '\x90', '\x92', '\x82', ' ', '\xF0', '\x90', '\x92', '\x86', ' ', '\xF0', '\x90', '\x92', '\x88', ' ', '\xF0', '\x90', '\x92', '\x8A', ' ', '\xF0', '\x90', '\x92', '\x92', ' ', '\xF0', '\x90', '\x92', '\xA0', ' ', '\xF0', '\x90', '\x92', '\xA9', /* 𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩 */
|
||||
'\0',
|
||||
'\xEA', '\xA2', '\x9C', ' ', '\xEA', '\xA2', '\x9E', ' ', '\xEA', '\xA2', '\xB3', ' ', '\xEA', '\xA2', '\x82', ' ', '\xEA', '\xA2', '\x96', ' ', '\xEA', '\xA2', '\x92', ' ', '\xEA', '\xA2', '\x9D', ' ', '\xEA', '\xA2', '\x9B', /* ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ */
|
||||
'\0',
|
||||
'\xEA', '\xA2', '\x82', ' ', '\xEA', '\xA2', '\xA8', ' ', '\xEA', '\xA2', '\xBA', ' ', '\xEA', '\xA2', '\xA4', ' ', '\xEA', '\xA2', '\x8E', /* ꢂ ꢨ ꢺ ꢤ ꢎ */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x91', '\x95', ' ', '\xF0', '\x90', '\x91', '\x99', /* 𐑕 𐑙 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x91', '\x94', ' ', '\xF0', '\x90', '\x91', '\x96', ' ', '\xF0', '\x90', '\x91', '\x97', ' ', '\xF0', '\x90', '\x91', '\xB9', ' ', '\xF0', '\x90', '\x91', '\xBB', /* 𐑔 𐑖 𐑗 𐑹 𐑻 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x91', '\x9F', ' ', '\xF0', '\x90', '\x91', '\xA3', /* 𐑟 𐑣 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x91', '\xB1', ' ', '\xF0', '\x90', '\x91', '\xB2', ' ', '\xF0', '\x90', '\x91', '\xB3', ' ', '\xF0', '\x90', '\x91', '\xB4', ' ', '\xF0', '\x90', '\x91', '\xB8', ' ', '\xF0', '\x90', '\x91', '\xBA', ' ', '\xF0', '\x90', '\x91', '\xBC', /* 𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼 */
|
||||
'\0',
|
||||
'\xF0', '\x90', '\x91', '\xB4', ' ', '\xF0', '\x90', '\x91', '\xBB', ' ', '\xF0', '\x90', '\x91', '\xB9', /* 𐑴 𐑻 𐑹 */
|
||||
'\0',
|
||||
'\xE0', '\xB6', '\x89', ' ', '\xE0', '\xB6', '\x9A', ' ', '\xE0', '\xB6', '\x9D', ' ', '\xE0', '\xB6', '\xB3', ' ', '\xE0', '\xB6', '\xB4', ' ', '\xE0', '\xB6', '\xBA', ' ', '\xE0', '\xB6', '\xBD', ' ', '\xE0', '\xB7', '\x86', /* ඉ ක ඝ ඳ ප ය ල ෆ */
|
||||
'\0',
|
||||
'\xE0', '\xB6', '\x91', ' ', '\xE0', '\xB6', '\x94', ' ', '\xE0', '\xB6', '\x9D', ' ', '\xE0', '\xB6', '\xA2', ' ', '\xE0', '\xB6', '\xA7', ' ', '\xE0', '\xB6', '\xAE', ' ', '\xE0', '\xB6', '\xB0', ' ', '\xE0', '\xB6', '\xBB', /* එ ඔ ඝ ජ ට ථ ධ ර */
|
||||
'\0',
|
||||
'\xE0', '\xB6', '\xAF', ' ', '\xE0', '\xB6', '\xB3', ' ', '\xE0', '\xB6', '\x8B', ' ', '\xE0', '\xB6', '\xBD', ' ', '\xE0', '\xB6', '\xAD', '\xE0', '\xB7', '\x96', ' ', '\xE0', '\xB6', '\xAD', '\xE0', '\xB7', '\x94', ' ', '\xE0', '\xB6', '\xB6', '\xE0', '\xB7', '\x94', ' ', '\xE0', '\xB6', '\xAF', '\xE0', '\xB7', '\x94', /* ද ඳ උ ල තූ තු බු දු */
|
||||
'\0',
|
||||
'\xE1', '\xAE', '\x8B', ' ', '\xE1', '\xAE', '\x9E', ' ', '\xE1', '\xAE', '\xAE', ' ', '\xE1', '\xAE', '\xBD', ' ', '\xE1', '\xAE', '\xB0', ' ', '\xE1', '\xAE', '\x88', /* ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ */
|
||||
'\0',
|
||||
'\xE1', '\xAE', '\x84', ' ', '\xE1', '\xAE', '\x94', ' ', '\xE1', '\xAE', '\x95', ' ', '\xE1', '\xAE', '\x97', ' ', '\xE1', '\xAE', '\xB0', ' ', '\xE1', '\xAE', '\x86', ' ', '\xE1', '\xAE', '\x88', ' ', '\xE1', '\xAE', '\x89', /* ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ */
|
||||
'\0',
|
||||
'\xE1', '\xAE', '\xBC', ' ', '\xE1', '\xB3', '\x84', /* ᮼ ᳄ */
|
||||
'\0',
|
||||
'\xEA', '\xAA', '\x86', ' ', '\xEA', '\xAA', '\x94', ' ', '\xEA', '\xAA', '\x92', ' ', '\xEA', '\xAA', '\x96', ' ', '\xEA', '\xAA', '\xAB', /* ꪆ ꪔ ꪒ ꪖ ꪫ */
|
||||
'\0',
|
||||
'\xEA', '\xAA', '\x89', ' ', '\xEA', '\xAA', '\xAB', ' ', '\xEA', '\xAA', '\xAE', /* ꪉ ꪫ ꪮ */
|
||||
'\0',
|
||||
'\xE0', '\xAE', '\x89', ' ', '\xE0', '\xAE', '\x92', ' ', '\xE0', '\xAE', '\x93', ' ', '\xE0', '\xAE', '\xB1', ' ', '\xE0', '\xAE', '\x88', ' ', '\xE0', '\xAE', '\x95', ' ', '\xE0', '\xAE', '\x99', ' ', '\xE0', '\xAE', '\x9A', /* உ ஒ ஓ ற ஈ க ங ச */
|
||||
'\0',
|
||||
'\xE0', '\xAE', '\x95', ' ', '\xE0', '\xAE', '\x9A', ' ', '\xE0', '\xAE', '\xB2', ' ', '\xE0', '\xAE', '\xB6', ' ', '\xE0', '\xAE', '\x89', ' ', '\xE0', '\xAE', '\x99', ' ', '\xE0', '\xAE', '\x9F', ' ', '\xE0', '\xAE', '\xAA', /* க ச ல ஶ உ ங ட ப */
|
||||
|
|
@ -231,6 +387,12 @@
|
|||
'\xE0', '\xB8', '\x8D', ' ', '\xE0', '\xB8', '\x90', /* ญ ฐ */
|
||||
'\0',
|
||||
'\xE0', '\xB9', '\x90', ' ', '\xE0', '\xB9', '\x91', ' ', '\xE0', '\xB9', '\x93', /* ๐ ๑ ๓ */
|
||||
'\0',
|
||||
'\xE2', '\xB5', '\x94', ' ', '\xE2', '\xB5', '\x99', ' ', '\xE2', '\xB5', '\x9B', ' ', '\xE2', '\xB5', '\x9E', ' ', '\xE2', '\xB4', '\xB5', ' ', '\xE2', '\xB4', '\xBC', ' ', '\xE2', '\xB4', '\xB9', ' ', '\xE2', '\xB5', '\x8E', /* ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ */
|
||||
'\0',
|
||||
'\xEA', '\x97', '\x8D', ' ', '\xEA', '\x98', '\x96', ' ', '\xEA', '\x98', '\x99', ' ', '\xEA', '\x98', '\x9C', ' ', '\xEA', '\x96', '\x9C', ' ', '\xEA', '\x96', '\x9D', ' ', '\xEA', '\x94', '\x85', ' ', '\xEA', '\x95', '\xA2', /* ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ */
|
||||
'\0',
|
||||
'\xEA', '\x97', '\x8D', ' ', '\xEA', '\x98', '\x96', ' ', '\xEA', '\x98', '\x99', ' ', '\xEA', '\x97', '\x9E', ' ', '\xEA', '\x94', '\x85', ' ', '\xEA', '\x95', '\xA2', ' ', '\xEA', '\x96', '\x9C', ' ', '\xEA', '\x94', '\x86', /* ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ */
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
'\0',
|
||||
'\xE4', '\xBB', '\x96', ' ', '\xE4', '\xBB', '\xAC', ' ', '\xE4', '\xBD', '\xA0', ' ', '\xE4', '\xBE', '\x86', ' ', '\xE5', '\x80', '\x91', ' ', '\xE5', '\x88', '\xB0', ' ', '\xE5', '\x92', '\x8C', ' ', '\xE5', '\x9C', '\xB0', /* 他 们 你 來 們 到 和 地 */
|
||||
|
|
@ -281,6 +443,12 @@
|
|||
af_blue_stringsets[] =
|
||||
{
|
||||
/* */
|
||||
{ AF_BLUE_STRING_ADLAM_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_ADLAM_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_ADLAM_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_ARABIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_ARABIC_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_ARABIC_JOIN, AF_BLUE_PROPERTY_LATIN_NEUTRAL },
|
||||
|
|
@ -293,6 +461,12 @@
|
|||
{ AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_AVESTAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_AVESTAN_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_BAMUM_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_BAMUM_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_BENGALI_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
|
|
@ -300,6 +474,27 @@
|
|||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_BENGALI_BASE, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_BUHID_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_BUHID_LARGE, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_BUHID_SMALL, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_BUHID_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_CHAKMA_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_CHAKMA_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_CHAKMA_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_CARIAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_CARIAN_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_CHEROKEE_CAPITAL, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_CHEROKEE_CAPITAL, 0 },
|
||||
{ AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
|
|
@ -308,6 +503,17 @@
|
|||
{ AF_BLUE_STRING_CHEROKEE_SMALL, 0 },
|
||||
{ AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_COPTIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_COPTIC_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_COPTIC_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_CYPRIOT_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_CYPRIOT_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_CYPRIOT_SMALL, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_CYPRIOT_SMALL, 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 |
|
||||
|
|
@ -323,6 +529,12 @@
|
|||
{ AF_BLUE_STRING_DEVANAGARI_BASE, 0 },
|
||||
{ AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_DESERET_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_DESERET_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_DESERET_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_ETHIOPIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
|
|
@ -331,6 +543,8 @@
|
|||
{ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0 },
|
||||
|
|
@ -340,6 +554,15 @@
|
|||
{ AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_GOTHIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_GOTHIC_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_GREEK_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_GREEK_SMALL_BETA_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
|
|
@ -368,9 +591,13 @@
|
|||
{ AF_BLUE_STRING_HEBREW_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_HEBREW_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_KANNADA_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_KAYAH_LI_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_KAYAH_LI_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_KAYAH_LI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_KAYAH_LI_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_KHMER_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP, AF_BLUE_PROPERTY_LATIN_SUB_TOP },
|
||||
|
|
@ -382,6 +609,9 @@
|
|||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_KANNADA_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_LAO_BOTTOM, 0 },
|
||||
|
|
@ -392,9 +622,9 @@
|
|||
{ AF_BLUE_STRING_LATIN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_F_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_LATIN_SMALL, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_LATIN_SMALL, 0 },
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
|
|
@ -413,6 +643,9 @@
|
|||
{ AF_BLUE_STRING_LATIN_SUPS_SMALL, 0 },
|
||||
{ AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_LISU_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_LISU_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_MALAYALAM_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
|
|
@ -422,17 +655,61 @@
|
|||
{ AF_BLUE_STRING_MYANMAR_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_MYANMAR_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_NKO_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_NKO_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_NKO_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_OL_CHIKI, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_OL_CHIKI, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_OLD_TURKIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_OLD_TURKIC_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_OSAGE_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_OSMANYA_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_OSMANYA_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_SAURASHTRA_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_SAURASHTRA_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_SHAVIAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_SHAVIAN_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_SHAVIAN_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_SHAVIAN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_SINHALA_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_SINHALA_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_SINHALA_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_SUNDANESE_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_SUNDANESE_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_SUNDANESE_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_TAMIL_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_TAMIL_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_TAI_VIET_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_TAI_VIET_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_TELUGU_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_TELUGU_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_TIFINAGH, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_THAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_THAI_BOTTOM, 0 },
|
||||
|
|
@ -442,6 +719,9 @@
|
|||
{ AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_THAI_DIGIT_TOP, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_VAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
|
||||
{ AF_BLUE_STRING_VAI_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
{ AF_BLUE_STRING_CJK_TOP, AF_BLUE_PROPERTY_CJK_TOP },
|
||||
{ AF_BLUE_STRING_CJK_BOTTOM, 0 },
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter data for blue strings (body). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
//
|
||||
// Auto-fitter data for blue strings.
|
||||
//
|
||||
// Copyright 2013-2016 by
|
||||
// Copyright 2013-2018 by
|
||||
// David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
//
|
||||
// This file is part of the FreeType project, and may only be used,
|
||||
|
|
@ -74,6 +74,15 @@
|
|||
|
||||
AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
||||
|
||||
AF_BLUE_STRING_ADLAM_CAPITAL_TOP
|
||||
"𞤌 𞤅 𞤈 𞤏 𞤔 𞤚"
|
||||
AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM
|
||||
"𞤂 𞤖"
|
||||
AF_BLUE_STRING_ADLAM_SMALL_TOP
|
||||
"𞤬 𞤮 𞤻 𞤼 𞤾"
|
||||
AF_BLUE_STRING_ADLAM_SMALL_BOTTOM
|
||||
"𞤤 𞤨 𞤩 𞤭 𞤴 𞤸 𞤺 𞥀"
|
||||
|
||||
AF_BLUE_STRING_ARABIC_TOP
|
||||
"ا إ ل ك ط ظ"
|
||||
AF_BLUE_STRING_ARABIC_BOTTOM
|
||||
|
|
@ -99,6 +108,16 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER
|
||||
"բ ը ի լ ղ պ փ ց"
|
||||
|
||||
AF_BLUE_STRING_AVESTAN_TOP
|
||||
"𐬀 𐬁 𐬐 𐬛"
|
||||
AF_BLUE_STRING_AVESTAN_BOTTOM
|
||||
"𐬀 𐬁"
|
||||
|
||||
AF_BLUE_STRING_BAMUM_TOP
|
||||
"ꚧ ꚨ ꛛ ꛉ ꛁ ꛈ ꛫ ꛯ"
|
||||
AF_BLUE_STRING_BAMUM_BOTTOM
|
||||
"ꚭ ꚳ ꚶ ꛬ ꚢ ꚽ ꛯ ꛲"
|
||||
|
||||
AF_BLUE_STRING_BENGALI_BASE
|
||||
"অ ড ত ন ব ভ ল ক"
|
||||
AF_BLUE_STRING_BENGALI_TOP
|
||||
|
|
@ -106,6 +125,40 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_BENGALI_HEAD
|
||||
"ও এ ড ত ন ব ল ক"
|
||||
|
||||
AF_BLUE_STRING_BUHID_TOP
|
||||
"ᝐ ᝈ"
|
||||
AF_BLUE_STRING_BUHID_LARGE
|
||||
"ᝅ ᝊ ᝎ"
|
||||
AF_BLUE_STRING_BUHID_SMALL
|
||||
"ᝂ ᝃ ᝉ ᝌ"
|
||||
AF_BLUE_STRING_BUHID_BOTTOM
|
||||
"ᝀ ᝃ ᝆ ᝉ ᝋ ᝏ ᝑ"
|
||||
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP
|
||||
"ᗜ ᖴ ᐁ ᒣ ᑫ ᑎ ᔑ ᗰ"
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM
|
||||
"ᗶ ᖵ ᒧ ᐃ ᑌ ᒍ ᔑ ᗢ"
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP
|
||||
"ᓓ ᓕ ᓀ ᓂ ᓄ ᕄ ᕆ ᘣ"
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM
|
||||
"ᕃ ᓂ ᓀ ᕂ ᓗ ᓚ ᕆ ᘣ"
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP
|
||||
"ᐪ ᙆ ᣘ ᐢ ᒾ ᣗ ᔆ"
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM
|
||||
"ᙆ ᗮ ᒻ ᐞ ᔆ ᒡ ᒢ ᓑ"
|
||||
|
||||
AF_BLUE_STRING_CARIAN_TOP
|
||||
"𐊧 𐊫 𐊬 𐊭 𐊱 𐊺 𐊼 𐊿"
|
||||
AF_BLUE_STRING_CARIAN_BOTTOM
|
||||
"𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉"
|
||||
|
||||
AF_BLUE_STRING_CHAKMA_TOP
|
||||
"𑄃 𑄅 𑄉 𑄙 𑄗"
|
||||
AF_BLUE_STRING_CHAKMA_BOTTOM
|
||||
"𑄅 𑄛 𑄝 𑄗 𑄓"
|
||||
AF_BLUE_STRING_CHAKMA_DESCENDER
|
||||
"𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢"
|
||||
|
||||
AF_BLUE_STRING_CHEROKEE_CAPITAL
|
||||
"Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ"
|
||||
AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER
|
||||
|
|
@ -115,6 +168,22 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER
|
||||
"ᏸ ꮐ ꭹ ꭻ"
|
||||
|
||||
AF_BLUE_STRING_COPTIC_CAPITAL_TOP
|
||||
"Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ"
|
||||
AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM
|
||||
"Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ"
|
||||
AF_BLUE_STRING_COPTIC_SMALL_TOP
|
||||
"ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ"
|
||||
AF_BLUE_STRING_COPTIC_SMALL_BOTTOM
|
||||
"ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ"
|
||||
|
||||
AF_BLUE_STRING_CYPRIOT_TOP
|
||||
"𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦"
|
||||
AF_BLUE_STRING_CYPRIOT_BOTTOM
|
||||
"𐠃 𐠊 𐠛 𐠣 𐠳 𐠵 𐠐"
|
||||
AF_BLUE_STRING_CYPRIOT_SMALL
|
||||
"𐠈 𐠏 𐠖"
|
||||
|
||||
AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP
|
||||
"Б В Е П З О С Э"
|
||||
AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM
|
||||
|
|
@ -124,6 +193,15 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER
|
||||
"р у ф"
|
||||
|
||||
AF_BLUE_STRING_DESERET_CAPITAL_TOP
|
||||
"𐐂 𐐄 𐐋 𐐗 𐐑"
|
||||
AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM
|
||||
"𐐀 𐐂 𐐄 𐐗 𐐛"
|
||||
AF_BLUE_STRING_DESERET_SMALL_TOP
|
||||
"𐐪 𐐬 𐐳 𐐿 𐐹"
|
||||
AF_BLUE_STRING_DESERET_SMALL_BOTTOM
|
||||
"𐐨 𐐪 𐐬 𐐿 𐑃"
|
||||
|
||||
AF_BLUE_STRING_DEVANAGARI_BASE
|
||||
"क म अ आ थ ध भ श"
|
||||
AF_BLUE_STRING_DEVANAGARI_TOP
|
||||
|
|
@ -164,6 +242,25 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER
|
||||
"ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ"
|
||||
|
||||
AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP
|
||||
"Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ"
|
||||
AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM
|
||||
"Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ"
|
||||
|
||||
AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP
|
||||
"Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ"
|
||||
AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM
|
||||
"Ⰵ Ⰴ Ⰲ Ⱚ Ⱎ Ⱑ Ⰺ Ⱄ"
|
||||
AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP
|
||||
"ⰵ ⱄ ⱚ ⰴ ⰲ ⰺ ⱛ ⰻ"
|
||||
AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM
|
||||
"ⰵ ⰴ ⰲ ⱚ ⱎ ⱑ ⰺ ⱄ"
|
||||
|
||||
AF_BLUE_STRING_GOTHIC_TOP
|
||||
"𐌲 𐌶 𐍀 𐍄 𐌴 𐍃 𐍈 𐌾"
|
||||
AF_BLUE_STRING_GOTHIC_BOTTOM
|
||||
"𐌶 𐌴 𐍃 𐍈"
|
||||
|
||||
AF_BLUE_STRING_GREEK_CAPITAL_TOP
|
||||
"Γ Β Ε Ζ Θ Ο Ω"
|
||||
AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM
|
||||
|
|
@ -209,6 +306,17 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_KANNADA_BOTTOM
|
||||
"ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭"
|
||||
|
||||
AF_BLUE_STRING_KAYAH_LI_TOP
|
||||
"꤅ ꤏ ꤁ ꤋ ꤀ ꤍ"
|
||||
AF_BLUE_STRING_KAYAH_LI_BOTTOM
|
||||
"꤈ ꤘ ꤀ ꤍ ꤢ"
|
||||
AF_BLUE_STRING_KAYAH_LI_ASCENDER
|
||||
"ꤖ ꤡ"
|
||||
AF_BLUE_STRING_KAYAH_LI_DESCENDER
|
||||
"ꤑ ꤜ ꤞ"
|
||||
AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER
|
||||
"ꤑ꤬ ꤜ꤭ ꤔ꤬"
|
||||
|
||||
AF_BLUE_STRING_KHMER_TOP
|
||||
"ខ ទ ន ឧ ឩ ា"
|
||||
AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP
|
||||
|
|
@ -242,8 +350,10 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
"H E Z L O C U S"
|
||||
AF_BLUE_STRING_LATIN_SMALL_F_TOP
|
||||
"f i j k d b h"
|
||||
AF_BLUE_STRING_LATIN_SMALL
|
||||
"x z r o e s c"
|
||||
AF_BLUE_STRING_LATIN_SMALL_TOP
|
||||
"u v x z o e s c"
|
||||
AF_BLUE_STRING_LATIN_SMALL_BOTTOM
|
||||
"n r x z o e s c"
|
||||
AF_BLUE_STRING_LATIN_SMALL_DESCENDER
|
||||
"p q g j y"
|
||||
|
||||
|
|
@ -272,6 +382,11 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER
|
||||
"ᵖ ʸ ᵍ"
|
||||
|
||||
AF_BLUE_STRING_LISU_TOP
|
||||
"ꓡ ꓧ ꓱ ꓶ ꓩ ꓚ ꓵ ꓳ"
|
||||
AF_BLUE_STRING_LISU_BOTTOM
|
||||
"ꓕ ꓜ ꓞ ꓡ ꓛ ꓢ ꓳ ꓴ"
|
||||
|
||||
AF_BLUE_STRING_MALAYALAM_TOP
|
||||
"ഒ ട ഠ റ ച പ ച്ച പ്പ"
|
||||
AF_BLUE_STRING_MALAYALAM_BOTTOM
|
||||
|
|
@ -286,6 +401,59 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_MYANMAR_DESCENDER
|
||||
"ဉ ည ဥ ဩ ဨ ၂ ၅ ၉"
|
||||
|
||||
AF_BLUE_STRING_NKO_TOP
|
||||
"ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ"
|
||||
AF_BLUE_STRING_NKO_BOTTOM
|
||||
"߀ ߘ ߡ ߠ ߥ"
|
||||
AF_BLUE_STRING_NKO_SMALL_TOP
|
||||
"ߏ ߛ ߋ"
|
||||
AF_BLUE_STRING_NKO_SMALL_BOTTOM
|
||||
"ߎ ߏ ߛ ߋ"
|
||||
|
||||
AF_BLUE_STRING_OL_CHIKI
|
||||
"ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ"
|
||||
|
||||
AF_BLUE_STRING_OLD_TURKIC_TOP
|
||||
"𐰗 𐰘 𐰧"
|
||||
AF_BLUE_STRING_OLD_TURKIC_BOTTOM
|
||||
"𐰉 𐰗 𐰦 𐰧"
|
||||
|
||||
AF_BLUE_STRING_OSAGE_CAPITAL_TOP
|
||||
"𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆"
|
||||
AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM
|
||||
"𐒰 𐓍 𐓂 𐒿 𐓎 𐒹"
|
||||
AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER
|
||||
"𐒼 𐒽 𐒾"
|
||||
AF_BLUE_STRING_OSAGE_SMALL_TOP
|
||||
"𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮"
|
||||
AF_BLUE_STRING_OSAGE_SMALL_BOTTOM
|
||||
"𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶"
|
||||
AF_BLUE_STRING_OSAGE_SMALL_ASCENDER
|
||||
"𐓤 𐓦 𐓸 𐓹 𐓛"
|
||||
AF_BLUE_STRING_OSAGE_SMALL_DESCENDER
|
||||
"𐓤 𐓥 𐓦"
|
||||
|
||||
AF_BLUE_STRING_OSMANYA_TOP
|
||||
"𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣"
|
||||
AF_BLUE_STRING_OSMANYA_BOTTOM
|
||||
"𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩"
|
||||
|
||||
AF_BLUE_STRING_SAURASHTRA_TOP
|
||||
"ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ"
|
||||
AF_BLUE_STRING_SAURASHTRA_BOTTOM
|
||||
"ꢂ ꢨ ꢺ ꢤ ꢎ"
|
||||
|
||||
AF_BLUE_STRING_SHAVIAN_TOP
|
||||
"𐑕 𐑙"
|
||||
AF_BLUE_STRING_SHAVIAN_BOTTOM
|
||||
"𐑔 𐑖 𐑗 𐑹 𐑻"
|
||||
AF_BLUE_STRING_SHAVIAN_DESCENDER
|
||||
"𐑟 𐑣"
|
||||
AF_BLUE_STRING_SHAVIAN_SMALL_TOP
|
||||
"𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼"
|
||||
AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM
|
||||
"𐑴 𐑻 𐑹"
|
||||
|
||||
AF_BLUE_STRING_SINHALA_TOP
|
||||
"ඉ ක ඝ ඳ ප ය ල ෆ"
|
||||
AF_BLUE_STRING_SINHALA_BOTTOM
|
||||
|
|
@ -293,6 +461,18 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_SINHALA_DESCENDER
|
||||
"ද ඳ උ ල තූ තු බු දු"
|
||||
|
||||
AF_BLUE_STRING_SUNDANESE_TOP
|
||||
"ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ"
|
||||
AF_BLUE_STRING_SUNDANESE_BOTTOM
|
||||
"ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ"
|
||||
AF_BLUE_STRING_SUNDANESE_DESCENDER
|
||||
"ᮼ ᳄"
|
||||
|
||||
AF_BLUE_STRING_TAI_VIET_TOP
|
||||
"ꪆ ꪔ ꪒ ꪖ ꪫ"
|
||||
AF_BLUE_STRING_TAI_VIET_BOTTOM
|
||||
"ꪉ ꪫ ꪮ"
|
||||
|
||||
AF_BLUE_STRING_TAMIL_TOP
|
||||
"உ ஒ ஓ ற ஈ க ங ச"
|
||||
AF_BLUE_STRING_TAMIL_BOTTOM
|
||||
|
|
@ -318,6 +498,14 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_THAI_DIGIT_TOP
|
||||
"๐ ๑ ๓"
|
||||
|
||||
AF_BLUE_STRING_TIFINAGH
|
||||
"ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ"
|
||||
|
||||
AF_BLUE_STRING_VAI_TOP
|
||||
"ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ"
|
||||
AF_BLUE_STRING_VAI_BOTTOM
|
||||
"ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ"
|
||||
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
|
||||
|
|
@ -483,6 +671,14 @@ 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_ADLM
|
||||
{ AF_BLUE_STRING_ADLAM_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_ADLAM_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_ADLAM_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_ARAB
|
||||
{ AF_BLUE_STRING_ARABIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_ARABIC_BOTTOM, 0 }
|
||||
|
|
@ -499,6 +695,16 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_AVST
|
||||
{ AF_BLUE_STRING_AVESTAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_AVESTAN_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_BAMU
|
||||
{ AF_BLUE_STRING_BAMUM_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_BAMUM_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_BENG
|
||||
{ AF_BLUE_STRING_BENGALI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
|
|
@ -508,6 +714,35 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_BENGALI_BASE, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_BUHD
|
||||
{ AF_BLUE_STRING_BUHID_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_BUHID_LARGE, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_BUHID_SMALL, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_BUHID_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_CAKM
|
||||
{ AF_BLUE_STRING_CHAKMA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_CHAKMA_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_CHAKMA_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_CANS
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_CARI
|
||||
{ AF_BLUE_STRING_CARIAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_CARIAN_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_CHER
|
||||
{ AF_BLUE_STRING_CHEROKEE_CAPITAL, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_CHEROKEE_CAPITAL, 0 }
|
||||
|
|
@ -518,6 +753,21 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_COPT
|
||||
{ AF_BLUE_STRING_COPTIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_COPTIC_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_COPTIC_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_CPRT
|
||||
{ AF_BLUE_STRING_CYPRIOT_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_CYPRIOT_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_CYPRIOT_SMALL, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_CYPRIOT_SMALL, 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 }
|
||||
|
|
@ -537,18 +787,27 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_DSRT
|
||||
{ AF_BLUE_STRING_DESERET_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_DESERET_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_DESERET_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_ETHI
|
||||
{ AF_BLUE_STRING_ETHIOPIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
// blue zones for Mtavruli are missing (not yet defined in Unicode)
|
||||
AF_BLUE_STRINGSET_GEOR
|
||||
{ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_GEOK
|
||||
|
|
@ -561,6 +820,19 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_GLAG
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_GOTH
|
||||
{ AF_BLUE_STRING_GOTHIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_GOTHIC_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_GREK
|
||||
{ AF_BLUE_STRING_GREEK_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM, 0 }
|
||||
|
|
@ -597,10 +869,14 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_HEBREW_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_KNDA
|
||||
{ AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_KANNADA_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
AF_BLUE_STRINGSET_KALI
|
||||
{ AF_BLUE_STRING_KAYAH_LI_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_KAYAH_LI_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_KAYAH_LI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_KAYAH_LI_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_KHMR
|
||||
{ AF_BLUE_STRING_KHMER_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
|
|
@ -617,6 +893,11 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_KNDA
|
||||
{ AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_KANNADA_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_LAO
|
||||
{ AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
|
|
@ -630,9 +911,9 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_LATIN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_F_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_LATIN_SMALL, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_LATIN_SMALL, 0 }
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
|
|
@ -656,6 +937,11 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_LISU
|
||||
{ AF_BLUE_STRING_LISU_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_LISU_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_MLYM
|
||||
{ AF_BLUE_STRING_MALAYALAM_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 }
|
||||
|
|
@ -669,25 +955,89 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_MYANMAR_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_NKOO
|
||||
{ AF_BLUE_STRING_NKO_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_NKO_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_NKO_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_NONE
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_OLCK
|
||||
{ AF_BLUE_STRING_OL_CHIKI, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_OL_CHIKI, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_ORKH
|
||||
{ AF_BLUE_STRING_OLD_TURKIC_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_OLD_TURKIC_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_OSGE
|
||||
{ AF_BLUE_STRING_OSAGE_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_OSAGE_SMALL_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_OSMA
|
||||
{ AF_BLUE_STRING_OSMANYA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_OSMANYA_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_SAUR
|
||||
{ AF_BLUE_STRING_SAURASHTRA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_SAURASHTRA_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_SHAW
|
||||
{ AF_BLUE_STRING_SHAVIAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_SHAVIAN_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_SHAVIAN_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_SHAVIAN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_SINH
|
||||
{ AF_BLUE_STRING_SINHALA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_SINHALA_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_SINHALA_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_SUND
|
||||
{ AF_BLUE_STRING_SUNDANESE_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_SUNDANESE_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_SUNDANESE_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_TAML
|
||||
{ AF_BLUE_STRING_TAMIL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_TAMIL_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_TAVT
|
||||
{ AF_BLUE_STRING_TAI_VIET_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_TAI_VIET_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_TELU
|
||||
{ AF_BLUE_STRING_TELUGU_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_TELUGU_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_TFNG
|
||||
{ AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_TIFINAGH, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_THAI
|
||||
{ AF_BLUE_STRING_THAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
|
|
@ -699,6 +1049,10 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
|
|||
{ AF_BLUE_STRING_THAI_DIGIT_TOP, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_VAII
|
||||
{ AF_BLUE_STRING_VAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }
|
||||
{ AF_BLUE_STRING_VAI_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
/* */
|
||||
/* Auto-fitter data for blue strings (specification). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -77,110 +77,191 @@ FT_BEGIN_HEADER
|
|||
|
||||
typedef enum AF_Blue_String_
|
||||
{
|
||||
AF_BLUE_STRING_ARABIC_TOP = 0,
|
||||
AF_BLUE_STRING_ARABIC_BOTTOM = 18,
|
||||
AF_BLUE_STRING_ARABIC_JOIN = 33,
|
||||
AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP = 36,
|
||||
AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM = 60,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER = 84,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_TOP = 105,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM = 129,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER = 153,
|
||||
AF_BLUE_STRING_BENGALI_BASE = 177,
|
||||
AF_BLUE_STRING_BENGALI_TOP = 209,
|
||||
AF_BLUE_STRING_BENGALI_HEAD = 237,
|
||||
AF_BLUE_STRING_CHEROKEE_CAPITAL = 269,
|
||||
AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 301,
|
||||
AF_BLUE_STRING_CHEROKEE_SMALL = 333,
|
||||
AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 365,
|
||||
AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 381,
|
||||
AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 405,
|
||||
AF_BLUE_STRING_CYRILLIC_SMALL = 429,
|
||||
AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 453,
|
||||
AF_BLUE_STRING_DEVANAGARI_BASE = 462,
|
||||
AF_BLUE_STRING_DEVANAGARI_TOP = 494,
|
||||
AF_BLUE_STRING_DEVANAGARI_HEAD = 526,
|
||||
AF_BLUE_STRING_DEVANAGARI_BOTTOM = 558,
|
||||
AF_BLUE_STRING_ETHIOPIC_TOP = 566,
|
||||
AF_BLUE_STRING_ETHIOPIC_BOTTOM = 598,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 630,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 662,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 694,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 726,
|
||||
AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 758,
|
||||
AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 790,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 822,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 854,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 886,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 918,
|
||||
AF_BLUE_STRING_GREEK_CAPITAL_TOP = 950,
|
||||
AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 971,
|
||||
AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 989,
|
||||
AF_BLUE_STRING_GREEK_SMALL = 1007,
|
||||
AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 1031,
|
||||
AF_BLUE_STRING_GUJARATI_TOP = 1055,
|
||||
AF_BLUE_STRING_GUJARATI_BOTTOM = 1087,
|
||||
AF_BLUE_STRING_GUJARATI_ASCENDER = 1119,
|
||||
AF_BLUE_STRING_GUJARATI_DESCENDER = 1169,
|
||||
AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 1202,
|
||||
AF_BLUE_STRING_GURMUKHI_BASE = 1222,
|
||||
AF_BLUE_STRING_GURMUKHI_HEAD = 1254,
|
||||
AF_BLUE_STRING_GURMUKHI_TOP = 1286,
|
||||
AF_BLUE_STRING_GURMUKHI_BOTTOM = 1318,
|
||||
AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 1350,
|
||||
AF_BLUE_STRING_HEBREW_TOP = 1370,
|
||||
AF_BLUE_STRING_HEBREW_BOTTOM = 1394,
|
||||
AF_BLUE_STRING_HEBREW_DESCENDER = 1412,
|
||||
AF_BLUE_STRING_KANNADA_TOP = 1427,
|
||||
AF_BLUE_STRING_KANNADA_BOTTOM = 1471,
|
||||
AF_BLUE_STRING_KHMER_TOP = 1503,
|
||||
AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 1527,
|
||||
AF_BLUE_STRING_KHMER_BOTTOM = 1567,
|
||||
AF_BLUE_STRING_KHMER_DESCENDER = 1599,
|
||||
AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 1633,
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 1720,
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 1728,
|
||||
AF_BLUE_STRING_LAO_TOP = 1736,
|
||||
AF_BLUE_STRING_LAO_BOTTOM = 1768,
|
||||
AF_BLUE_STRING_LAO_ASCENDER = 1800,
|
||||
AF_BLUE_STRING_LAO_LARGE_ASCENDER = 1816,
|
||||
AF_BLUE_STRING_LAO_DESCENDER = 1828,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_TOP = 1852,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 1868,
|
||||
AF_BLUE_STRING_LATIN_SMALL_F_TOP = 1884,
|
||||
AF_BLUE_STRING_LATIN_SMALL = 1898,
|
||||
AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 1912,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 1922,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 1942,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 1962,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL = 1982,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 2018,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 2038,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 2069,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 2098,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL = 2124,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 2149,
|
||||
AF_BLUE_STRING_MALAYALAM_TOP = 2160,
|
||||
AF_BLUE_STRING_MALAYALAM_BOTTOM = 2204,
|
||||
AF_BLUE_STRING_MYANMAR_TOP = 2236,
|
||||
AF_BLUE_STRING_MYANMAR_BOTTOM = 2268,
|
||||
AF_BLUE_STRING_MYANMAR_ASCENDER = 2300,
|
||||
AF_BLUE_STRING_MYANMAR_DESCENDER = 2328,
|
||||
AF_BLUE_STRING_SINHALA_TOP = 2360,
|
||||
AF_BLUE_STRING_SINHALA_BOTTOM = 2392,
|
||||
AF_BLUE_STRING_SINHALA_DESCENDER = 2424,
|
||||
AF_BLUE_STRING_TAMIL_TOP = 2468,
|
||||
AF_BLUE_STRING_TAMIL_BOTTOM = 2500,
|
||||
AF_BLUE_STRING_TELUGU_TOP = 2532,
|
||||
AF_BLUE_STRING_TELUGU_BOTTOM = 2560,
|
||||
AF_BLUE_STRING_THAI_TOP = 2588,
|
||||
AF_BLUE_STRING_THAI_BOTTOM = 2612,
|
||||
AF_BLUE_STRING_THAI_ASCENDER = 2640,
|
||||
AF_BLUE_STRING_THAI_LARGE_ASCENDER = 2652,
|
||||
AF_BLUE_STRING_THAI_DESCENDER = 2664,
|
||||
AF_BLUE_STRING_THAI_LARGE_DESCENDER = 2680,
|
||||
AF_BLUE_STRING_THAI_DIGIT_TOP = 2688,
|
||||
af_blue_1_1 = 2699,
|
||||
AF_BLUE_STRING_ADLAM_CAPITAL_TOP = 0,
|
||||
AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM = 30,
|
||||
AF_BLUE_STRING_ADLAM_SMALL_TOP = 40,
|
||||
AF_BLUE_STRING_ADLAM_SMALL_BOTTOM = 65,
|
||||
AF_BLUE_STRING_ARABIC_TOP = 105,
|
||||
AF_BLUE_STRING_ARABIC_BOTTOM = 123,
|
||||
AF_BLUE_STRING_ARABIC_JOIN = 138,
|
||||
AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP = 141,
|
||||
AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM = 165,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER = 189,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_TOP = 210,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM = 234,
|
||||
AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER = 258,
|
||||
AF_BLUE_STRING_AVESTAN_TOP = 282,
|
||||
AF_BLUE_STRING_AVESTAN_BOTTOM = 302,
|
||||
AF_BLUE_STRING_BAMUM_TOP = 312,
|
||||
AF_BLUE_STRING_BAMUM_BOTTOM = 344,
|
||||
AF_BLUE_STRING_BENGALI_BASE = 376,
|
||||
AF_BLUE_STRING_BENGALI_TOP = 408,
|
||||
AF_BLUE_STRING_BENGALI_HEAD = 436,
|
||||
AF_BLUE_STRING_BUHID_TOP = 468,
|
||||
AF_BLUE_STRING_BUHID_LARGE = 476,
|
||||
AF_BLUE_STRING_BUHID_SMALL = 488,
|
||||
AF_BLUE_STRING_BUHID_BOTTOM = 504,
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP = 532,
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM = 564,
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP = 596,
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM = 628,
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP = 660,
|
||||
AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM = 688,
|
||||
AF_BLUE_STRING_CARIAN_TOP = 720,
|
||||
AF_BLUE_STRING_CARIAN_BOTTOM = 760,
|
||||
AF_BLUE_STRING_CHAKMA_TOP = 795,
|
||||
AF_BLUE_STRING_CHAKMA_BOTTOM = 820,
|
||||
AF_BLUE_STRING_CHAKMA_DESCENDER = 845,
|
||||
AF_BLUE_STRING_CHEROKEE_CAPITAL = 910,
|
||||
AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 942,
|
||||
AF_BLUE_STRING_CHEROKEE_SMALL = 974,
|
||||
AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 1006,
|
||||
AF_BLUE_STRING_COPTIC_CAPITAL_TOP = 1022,
|
||||
AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM = 1054,
|
||||
AF_BLUE_STRING_COPTIC_SMALL_TOP = 1086,
|
||||
AF_BLUE_STRING_COPTIC_SMALL_BOTTOM = 1118,
|
||||
AF_BLUE_STRING_CYPRIOT_TOP = 1150,
|
||||
AF_BLUE_STRING_CYPRIOT_BOTTOM = 1190,
|
||||
AF_BLUE_STRING_CYPRIOT_SMALL = 1225,
|
||||
AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 1240,
|
||||
AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 1264,
|
||||
AF_BLUE_STRING_CYRILLIC_SMALL = 1288,
|
||||
AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 1312,
|
||||
AF_BLUE_STRING_DESERET_CAPITAL_TOP = 1321,
|
||||
AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 1346,
|
||||
AF_BLUE_STRING_DESERET_SMALL_TOP = 1371,
|
||||
AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 1396,
|
||||
AF_BLUE_STRING_DEVANAGARI_BASE = 1421,
|
||||
AF_BLUE_STRING_DEVANAGARI_TOP = 1453,
|
||||
AF_BLUE_STRING_DEVANAGARI_HEAD = 1485,
|
||||
AF_BLUE_STRING_DEVANAGARI_BOTTOM = 1517,
|
||||
AF_BLUE_STRING_ETHIOPIC_TOP = 1525,
|
||||
AF_BLUE_STRING_ETHIOPIC_BOTTOM = 1557,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 1589,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 1621,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 1653,
|
||||
AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1685,
|
||||
AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1717,
|
||||
AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1749,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1781,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1813,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1845,
|
||||
AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1877,
|
||||
AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP = 1909,
|
||||
AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM = 1941,
|
||||
AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1973,
|
||||
AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 2005,
|
||||
AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 2037,
|
||||
AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 2069,
|
||||
AF_BLUE_STRING_GOTHIC_TOP = 2101,
|
||||
AF_BLUE_STRING_GOTHIC_BOTTOM = 2141,
|
||||
AF_BLUE_STRING_GREEK_CAPITAL_TOP = 2161,
|
||||
AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 2182,
|
||||
AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 2200,
|
||||
AF_BLUE_STRING_GREEK_SMALL = 2218,
|
||||
AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 2242,
|
||||
AF_BLUE_STRING_GUJARATI_TOP = 2266,
|
||||
AF_BLUE_STRING_GUJARATI_BOTTOM = 2298,
|
||||
AF_BLUE_STRING_GUJARATI_ASCENDER = 2330,
|
||||
AF_BLUE_STRING_GUJARATI_DESCENDER = 2380,
|
||||
AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2413,
|
||||
AF_BLUE_STRING_GURMUKHI_BASE = 2433,
|
||||
AF_BLUE_STRING_GURMUKHI_HEAD = 2465,
|
||||
AF_BLUE_STRING_GURMUKHI_TOP = 2497,
|
||||
AF_BLUE_STRING_GURMUKHI_BOTTOM = 2529,
|
||||
AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2561,
|
||||
AF_BLUE_STRING_HEBREW_TOP = 2581,
|
||||
AF_BLUE_STRING_HEBREW_BOTTOM = 2605,
|
||||
AF_BLUE_STRING_HEBREW_DESCENDER = 2623,
|
||||
AF_BLUE_STRING_KANNADA_TOP = 2638,
|
||||
AF_BLUE_STRING_KANNADA_BOTTOM = 2682,
|
||||
AF_BLUE_STRING_KAYAH_LI_TOP = 2714,
|
||||
AF_BLUE_STRING_KAYAH_LI_BOTTOM = 2738,
|
||||
AF_BLUE_STRING_KAYAH_LI_ASCENDER = 2758,
|
||||
AF_BLUE_STRING_KAYAH_LI_DESCENDER = 2766,
|
||||
AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER = 2778,
|
||||
AF_BLUE_STRING_KHMER_TOP = 2799,
|
||||
AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2823,
|
||||
AF_BLUE_STRING_KHMER_BOTTOM = 2863,
|
||||
AF_BLUE_STRING_KHMER_DESCENDER = 2895,
|
||||
AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2929,
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 3016,
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 3024,
|
||||
AF_BLUE_STRING_LAO_TOP = 3032,
|
||||
AF_BLUE_STRING_LAO_BOTTOM = 3064,
|
||||
AF_BLUE_STRING_LAO_ASCENDER = 3096,
|
||||
AF_BLUE_STRING_LAO_LARGE_ASCENDER = 3112,
|
||||
AF_BLUE_STRING_LAO_DESCENDER = 3124,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_TOP = 3148,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 3164,
|
||||
AF_BLUE_STRING_LATIN_SMALL_F_TOP = 3180,
|
||||
AF_BLUE_STRING_LATIN_SMALL_TOP = 3194,
|
||||
AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 3210,
|
||||
AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 3226,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 3236,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 3256,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 3276,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL = 3296,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 3332,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 3352,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 3383,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3412,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL = 3438,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3463,
|
||||
AF_BLUE_STRING_LISU_TOP = 3474,
|
||||
AF_BLUE_STRING_LISU_BOTTOM = 3506,
|
||||
AF_BLUE_STRING_MALAYALAM_TOP = 3538,
|
||||
AF_BLUE_STRING_MALAYALAM_BOTTOM = 3582,
|
||||
AF_BLUE_STRING_MYANMAR_TOP = 3614,
|
||||
AF_BLUE_STRING_MYANMAR_BOTTOM = 3646,
|
||||
AF_BLUE_STRING_MYANMAR_ASCENDER = 3678,
|
||||
AF_BLUE_STRING_MYANMAR_DESCENDER = 3706,
|
||||
AF_BLUE_STRING_NKO_TOP = 3738,
|
||||
AF_BLUE_STRING_NKO_BOTTOM = 3762,
|
||||
AF_BLUE_STRING_NKO_SMALL_TOP = 3777,
|
||||
AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3786,
|
||||
AF_BLUE_STRING_OL_CHIKI = 3798,
|
||||
AF_BLUE_STRING_OLD_TURKIC_TOP = 3822,
|
||||
AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3837,
|
||||
AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3857,
|
||||
AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3897,
|
||||
AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3927,
|
||||
AF_BLUE_STRING_OSAGE_SMALL_TOP = 3942,
|
||||
AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3982,
|
||||
AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4022,
|
||||
AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4047,
|
||||
AF_BLUE_STRING_OSMANYA_TOP = 4062,
|
||||
AF_BLUE_STRING_OSMANYA_BOTTOM = 4102,
|
||||
AF_BLUE_STRING_SAURASHTRA_TOP = 4142,
|
||||
AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4174,
|
||||
AF_BLUE_STRING_SHAVIAN_TOP = 4194,
|
||||
AF_BLUE_STRING_SHAVIAN_BOTTOM = 4204,
|
||||
AF_BLUE_STRING_SHAVIAN_DESCENDER = 4229,
|
||||
AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4239,
|
||||
AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4274,
|
||||
AF_BLUE_STRING_SINHALA_TOP = 4289,
|
||||
AF_BLUE_STRING_SINHALA_BOTTOM = 4321,
|
||||
AF_BLUE_STRING_SINHALA_DESCENDER = 4353,
|
||||
AF_BLUE_STRING_SUNDANESE_TOP = 4397,
|
||||
AF_BLUE_STRING_SUNDANESE_BOTTOM = 4421,
|
||||
AF_BLUE_STRING_SUNDANESE_DESCENDER = 4453,
|
||||
AF_BLUE_STRING_TAI_VIET_TOP = 4461,
|
||||
AF_BLUE_STRING_TAI_VIET_BOTTOM = 4481,
|
||||
AF_BLUE_STRING_TAMIL_TOP = 4493,
|
||||
AF_BLUE_STRING_TAMIL_BOTTOM = 4525,
|
||||
AF_BLUE_STRING_TELUGU_TOP = 4557,
|
||||
AF_BLUE_STRING_TELUGU_BOTTOM = 4585,
|
||||
AF_BLUE_STRING_THAI_TOP = 4613,
|
||||
AF_BLUE_STRING_THAI_BOTTOM = 4637,
|
||||
AF_BLUE_STRING_THAI_ASCENDER = 4665,
|
||||
AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4677,
|
||||
AF_BLUE_STRING_THAI_DESCENDER = 4689,
|
||||
AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4705,
|
||||
AF_BLUE_STRING_THAI_DIGIT_TOP = 4713,
|
||||
AF_BLUE_STRING_TIFINAGH = 4725,
|
||||
AF_BLUE_STRING_VAI_TOP = 4757,
|
||||
AF_BLUE_STRING_VAI_BOTTOM = 4789,
|
||||
af_blue_1_1 = 4820,
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1,
|
||||
AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203,
|
||||
|
|
@ -239,34 +320,59 @@ FT_BEGIN_HEADER
|
|||
|
||||
typedef enum AF_Blue_Stringset_
|
||||
{
|
||||
AF_BLUE_STRINGSET_ARAB = 0,
|
||||
AF_BLUE_STRINGSET_ARMN = 4,
|
||||
AF_BLUE_STRINGSET_BENG = 11,
|
||||
AF_BLUE_STRINGSET_CHER = 16,
|
||||
AF_BLUE_STRINGSET_CYRL = 23,
|
||||
AF_BLUE_STRINGSET_DEVA = 29,
|
||||
AF_BLUE_STRINGSET_ETHI = 35,
|
||||
AF_BLUE_STRINGSET_GEOR = 38,
|
||||
AF_BLUE_STRINGSET_GEOK = 43,
|
||||
AF_BLUE_STRINGSET_GREK = 50,
|
||||
AF_BLUE_STRINGSET_GUJR = 57,
|
||||
AF_BLUE_STRINGSET_GURU = 63,
|
||||
AF_BLUE_STRINGSET_HEBR = 69,
|
||||
AF_BLUE_STRINGSET_KNDA = 73,
|
||||
AF_BLUE_STRINGSET_KHMR = 76,
|
||||
AF_BLUE_STRINGSET_KHMS = 82,
|
||||
AF_BLUE_STRINGSET_LAO = 85,
|
||||
AF_BLUE_STRINGSET_LATN = 91,
|
||||
AF_BLUE_STRINGSET_LATB = 98,
|
||||
AF_BLUE_STRINGSET_LATP = 105,
|
||||
AF_BLUE_STRINGSET_MLYM = 112,
|
||||
AF_BLUE_STRINGSET_MYMR = 115,
|
||||
AF_BLUE_STRINGSET_NONE = 120,
|
||||
AF_BLUE_STRINGSET_SINH = 121,
|
||||
AF_BLUE_STRINGSET_TAML = 125,
|
||||
AF_BLUE_STRINGSET_TELU = 128,
|
||||
AF_BLUE_STRINGSET_THAI = 131,
|
||||
af_blue_2_1 = 139,
|
||||
AF_BLUE_STRINGSET_ADLM = 0,
|
||||
AF_BLUE_STRINGSET_ARAB = 5,
|
||||
AF_BLUE_STRINGSET_ARMN = 9,
|
||||
AF_BLUE_STRINGSET_AVST = 16,
|
||||
AF_BLUE_STRINGSET_BAMU = 19,
|
||||
AF_BLUE_STRINGSET_BENG = 22,
|
||||
AF_BLUE_STRINGSET_BUHD = 27,
|
||||
AF_BLUE_STRINGSET_CAKM = 32,
|
||||
AF_BLUE_STRINGSET_CANS = 36,
|
||||
AF_BLUE_STRINGSET_CARI = 43,
|
||||
AF_BLUE_STRINGSET_CHER = 46,
|
||||
AF_BLUE_STRINGSET_COPT = 53,
|
||||
AF_BLUE_STRINGSET_CPRT = 58,
|
||||
AF_BLUE_STRINGSET_CYRL = 63,
|
||||
AF_BLUE_STRINGSET_DEVA = 69,
|
||||
AF_BLUE_STRINGSET_DSRT = 75,
|
||||
AF_BLUE_STRINGSET_ETHI = 80,
|
||||
AF_BLUE_STRINGSET_GEOR = 83,
|
||||
AF_BLUE_STRINGSET_GEOK = 90,
|
||||
AF_BLUE_STRINGSET_GLAG = 97,
|
||||
AF_BLUE_STRINGSET_GOTH = 102,
|
||||
AF_BLUE_STRINGSET_GREK = 105,
|
||||
AF_BLUE_STRINGSET_GUJR = 112,
|
||||
AF_BLUE_STRINGSET_GURU = 118,
|
||||
AF_BLUE_STRINGSET_HEBR = 124,
|
||||
AF_BLUE_STRINGSET_KALI = 128,
|
||||
AF_BLUE_STRINGSET_KHMR = 134,
|
||||
AF_BLUE_STRINGSET_KHMS = 140,
|
||||
AF_BLUE_STRINGSET_KNDA = 143,
|
||||
AF_BLUE_STRINGSET_LAO = 146,
|
||||
AF_BLUE_STRINGSET_LATN = 152,
|
||||
AF_BLUE_STRINGSET_LATB = 159,
|
||||
AF_BLUE_STRINGSET_LATP = 166,
|
||||
AF_BLUE_STRINGSET_LISU = 173,
|
||||
AF_BLUE_STRINGSET_MLYM = 176,
|
||||
AF_BLUE_STRINGSET_MYMR = 179,
|
||||
AF_BLUE_STRINGSET_NKOO = 184,
|
||||
AF_BLUE_STRINGSET_NONE = 189,
|
||||
AF_BLUE_STRINGSET_OLCK = 190,
|
||||
AF_BLUE_STRINGSET_ORKH = 193,
|
||||
AF_BLUE_STRINGSET_OSGE = 196,
|
||||
AF_BLUE_STRINGSET_OSMA = 204,
|
||||
AF_BLUE_STRINGSET_SAUR = 207,
|
||||
AF_BLUE_STRINGSET_SHAW = 210,
|
||||
AF_BLUE_STRINGSET_SINH = 216,
|
||||
AF_BLUE_STRINGSET_SUND = 220,
|
||||
AF_BLUE_STRINGSET_TAML = 224,
|
||||
AF_BLUE_STRINGSET_TAVT = 227,
|
||||
AF_BLUE_STRINGSET_TELU = 230,
|
||||
AF_BLUE_STRINGSET_TFNG = 233,
|
||||
AF_BLUE_STRINGSET_THAI = 236,
|
||||
AF_BLUE_STRINGSET_VAII = 244,
|
||||
af_blue_2_1 = 247,
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
|
||||
af_blue_2_1_1 = af_blue_2_1 + 2,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter data for blue strings (specification). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter hinting routines for CJK writing system (body). */
|
||||
/* */
|
||||
/* Copyright 2006-2016 by */
|
||||
/* Copyright 2006-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -16,9 +16,9 @@
|
|||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* The algorithm is based on akito's autohint patch, available here:
|
||||
* The algorithm is based on akito's autohint patch, archived at
|
||||
*
|
||||
* http://www.kde.gr.jp/~akito/patch/freetype2/
|
||||
* https://web.archive.org/web/20051219160454/http://www.kde.gr.jp:80/~akito/patch/freetype2/2.1.7/
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -29,13 +29,13 @@
|
|||
#include "afglobal.h"
|
||||
#include "afpic.h"
|
||||
#include "aflatin.h"
|
||||
#include "afcjk.h"
|
||||
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
|
||||
#undef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
|
||||
|
||||
#include "afcjk.h"
|
||||
#include "aferrors.h"
|
||||
|
||||
|
||||
|
|
@ -563,7 +563,7 @@
|
|||
FT_Face face )
|
||||
{
|
||||
FT_Bool started = 0, same_width = 1;
|
||||
FT_Fixed advance, old_advance = 0;
|
||||
FT_Fixed advance = 0, old_advance = 0;
|
||||
|
||||
void* shaper_buf;
|
||||
|
||||
|
|
@ -1398,9 +1398,9 @@
|
|||
other_flags |= AF_LATIN_HINTS_VERT_SNAP;
|
||||
|
||||
/*
|
||||
* We adjust stems to full pixels only if we don't use the `light' mode.
|
||||
* We adjust stems to full pixels unless in `light' or `lcd' mode.
|
||||
*/
|
||||
if ( mode != FT_RENDER_MODE_LIGHT )
|
||||
if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
|
|
@ -2272,13 +2272,7 @@
|
|||
goto Exit;
|
||||
|
||||
/* analyze glyph outline */
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
if ( ( metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
|
||||
AF_HINTS_DO_WARP( hints ) ) ||
|
||||
AF_HINTS_DO_HORIZONTAL( hints ) )
|
||||
#else
|
||||
if ( AF_HINTS_DO_HORIZONTAL( hints ) )
|
||||
#endif
|
||||
{
|
||||
error = af_cjk_hints_detect_features( hints, AF_DIMENSION_HORZ );
|
||||
if ( error )
|
||||
|
|
@ -2304,9 +2298,9 @@
|
|||
{
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
if ( dim == AF_DIMENSION_HORZ &&
|
||||
metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
|
||||
AF_HINTS_DO_WARP( hints ) )
|
||||
if ( dim == AF_DIMENSION_HORZ &&
|
||||
metrics->root.scaler.render_mode == FT_RENDER_MODE_NORMAL &&
|
||||
AF_HINTS_DO_WARP( hints ) )
|
||||
{
|
||||
AF_WarperRec warper;
|
||||
FT_Fixed scale;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter hinting routines for CJK writing system (specification). */
|
||||
/* */
|
||||
/* Copyright 2006-2016 by */
|
||||
/* Copyright 2006-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter coverages (specification only). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
/* Auto-fitter dummy routines to be used if no hinting should be */
|
||||
/* performed (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
/* Auto-fitter dummy routines to be used if no hinting should be */
|
||||
/* performed (specification). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Autofitter error codes (specification only). */
|
||||
/* */
|
||||
/* Copyright 2005-2016 by */
|
||||
/* Copyright 2005-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter routines to compute global hinting values (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -411,10 +411,7 @@
|
|||
|
||||
#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
|
||||
hb_font_destroy( globals->hb_font );
|
||||
globals->hb_font = NULL;
|
||||
|
||||
hb_buffer_destroy( globals->hb_buf );
|
||||
globals->hb_buf = NULL;
|
||||
#endif
|
||||
|
||||
/* no need to free `globals->glyph_styles'; */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
/* Auto-fitter routines to compute global hinting values */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter hinting routines (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -314,8 +314,12 @@
|
|||
AF_DUMP(( "Table of points:\n" ));
|
||||
|
||||
if ( hints->num_points )
|
||||
{
|
||||
AF_DUMP(( " index hedge hseg vedge vseg flags "
|
||||
/* " XXXXX XXXXX XXXXX XXXXX XXXXX XXXXXX" */
|
||||
" xorg yorg xscale yscale xfit yfit" ));
|
||||
/* " XXXXX XXXXX XXXX.XX XXXX.XX XXXX.XX XXXX.XX" */
|
||||
}
|
||||
else
|
||||
AF_DUMP(( " (none)\n" ));
|
||||
|
||||
|
|
@ -420,9 +424,14 @@
|
|||
dimension == AF_DIMENSION_HORZ ? "vertical"
|
||||
: "horizontal" ));
|
||||
if ( axis->num_segments )
|
||||
{
|
||||
AF_DUMP(( " index pos delta dir from to "
|
||||
/* " XXXXX XXXXX XXXXX XXXXX XXXX XXXX" */
|
||||
" link serif edge"
|
||||
/* " XXXX XXXXX XXXX" */
|
||||
" height extra flags\n" ));
|
||||
/* " XXXXXX XXXXX XXXXXXXXXXX" */
|
||||
}
|
||||
else
|
||||
AF_DUMP(( " (none)\n" ));
|
||||
|
||||
|
|
@ -507,15 +516,15 @@
|
|||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
seg = &axis->segments[idx];
|
||||
*offset = ( dim == AF_DIMENSION_HORZ ) ? seg->first->ox
|
||||
: seg->first->oy;
|
||||
*offset = ( dim == AF_DIMENSION_HORZ ) ? seg->first->fx
|
||||
: seg->first->fy;
|
||||
if ( seg->edge )
|
||||
*is_blue = (FT_Bool)( seg->edge->blue_edge != 0 );
|
||||
else
|
||||
*is_blue = FALSE;
|
||||
|
||||
if ( *is_blue )
|
||||
*blue_offset = seg->edge->blue_edge->cur;
|
||||
*blue_offset = seg->edge->blue_edge->org;
|
||||
else
|
||||
*blue_offset = 0;
|
||||
|
||||
|
|
@ -564,8 +573,12 @@
|
|||
10.0 * hints->y_scale / 65536.0 / 64.0 ));
|
||||
|
||||
if ( axis->num_edges )
|
||||
{
|
||||
AF_DUMP(( " index pos dir link serif"
|
||||
/* " XXXXX XXXX.XX XXXXX XXXX XXXXX" */
|
||||
" blue opos pos flags\n" ));
|
||||
/* " X XXXX.XX XXXX.XX XXXXXXXXXXX" */
|
||||
}
|
||||
else
|
||||
AF_DUMP(( " (none)\n" ));
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter hinting routines (specification). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -62,7 +62,7 @@ FT_BEGIN_HEADER
|
|||
*
|
||||
* by David Turner and Werner Lemberg
|
||||
*
|
||||
* http://www.tug.org/TUGboat/Articles/tb24-3/lemberg.pdf
|
||||
* https://www.tug.org/TUGboat/Articles/tb24-3/lemberg.pdf
|
||||
*
|
||||
* with appropriate updates.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter hinting routines for Indic writing system (body). */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* Copyright 2007-2018 by */
|
||||
/* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -18,13 +18,13 @@
|
|||
|
||||
#include "aftypes.h"
|
||||
#include "aflatin.h"
|
||||
#include "afcjk.h"
|
||||
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_INDIC
|
||||
|
||||
#include "afindic.h"
|
||||
#include "aferrors.h"
|
||||
#include "afcjk.h"
|
||||
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
/* Auto-fitter hinting routines for Indic writing system */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* Copyright 2007-2018 by */
|
||||
/* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter hinting routines for latin writing system (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -265,6 +265,45 @@
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
af_latin_sort_blue( FT_UInt count,
|
||||
AF_LatinBlue* table )
|
||||
{
|
||||
FT_UInt i, j;
|
||||
AF_LatinBlue swap;
|
||||
|
||||
|
||||
/* we sort from bottom to top */
|
||||
for ( i = 1; i < count; i++ )
|
||||
{
|
||||
for ( j = i; j > 0; j-- )
|
||||
{
|
||||
FT_Pos a, b;
|
||||
|
||||
|
||||
if ( table[j - 1]->flags & ( AF_LATIN_BLUE_TOP |
|
||||
AF_LATIN_BLUE_SUB_TOP ) )
|
||||
a = table[j - 1]->ref.org;
|
||||
else
|
||||
a = table[j - 1]->shoot.org;
|
||||
|
||||
if ( table[j]->flags & ( AF_LATIN_BLUE_TOP |
|
||||
AF_LATIN_BLUE_SUB_TOP ) )
|
||||
b = table[j]->ref.org;
|
||||
else
|
||||
b = table[j]->shoot.org;
|
||||
|
||||
if ( b >= a )
|
||||
break;
|
||||
|
||||
swap = table[j];
|
||||
table[j] = table[j - 1];
|
||||
table[j - 1] = swap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Find all blue zones. Flat segments give the reference points, */
|
||||
/* round segments the overshoot positions. */
|
||||
|
||||
|
|
@ -928,6 +967,60 @@
|
|||
|
||||
af_shaper_buf_destroy( face, shaper_buf );
|
||||
|
||||
/* we finally check whether blue zones are ordered; */
|
||||
/* `ref' and `shoot' values of two blue zones must not overlap */
|
||||
if ( axis->blue_count )
|
||||
{
|
||||
FT_UInt i;
|
||||
AF_LatinBlue blue_sorted[AF_BLUE_STRINGSET_MAX_LEN + 2];
|
||||
|
||||
|
||||
for ( i = 0; i < axis->blue_count; i++ )
|
||||
blue_sorted[i] = &axis->blues[i];
|
||||
|
||||
/* sort bottoms of blue zones... */
|
||||
af_latin_sort_blue( axis->blue_count, blue_sorted );
|
||||
|
||||
/* ...and adjust top values if necessary */
|
||||
for ( i = 0; i < axis->blue_count - 1; i++ )
|
||||
{
|
||||
FT_Pos* a;
|
||||
FT_Pos* b;
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
FT_Bool a_is_top = 0;
|
||||
#endif
|
||||
|
||||
|
||||
if ( blue_sorted[i]->flags & ( AF_LATIN_BLUE_TOP |
|
||||
AF_LATIN_BLUE_SUB_TOP ) )
|
||||
{
|
||||
a = &blue_sorted[i]->shoot.org;
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
a_is_top = 1;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
a = &blue_sorted[i]->ref.org;
|
||||
|
||||
if ( blue_sorted[i + 1]->flags & ( AF_LATIN_BLUE_TOP |
|
||||
AF_LATIN_BLUE_SUB_TOP ) )
|
||||
b = &blue_sorted[i + 1]->shoot.org;
|
||||
else
|
||||
b = &blue_sorted[i + 1]->ref.org;
|
||||
|
||||
if ( *a > *b )
|
||||
{
|
||||
*a = *b;
|
||||
FT_TRACE5(( "blue zone overlap:"
|
||||
" adjusting %s %d to %ld\n",
|
||||
a_is_top ? "overshoot" : "reference",
|
||||
blue_sorted[i] - axis->blues,
|
||||
*a ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FT_TRACE5(( "\n" ));
|
||||
|
||||
return;
|
||||
|
|
@ -941,7 +1034,7 @@
|
|||
FT_Face face )
|
||||
{
|
||||
FT_Bool started = 0, same_width = 1;
|
||||
FT_Fixed advance, old_advance = 0;
|
||||
FT_Fixed advance = 0, old_advance = 0;
|
||||
|
||||
void* shaper_buf;
|
||||
|
||||
|
|
@ -1597,9 +1690,11 @@
|
|||
if ( prev_max_on_coord > max_on_coord )
|
||||
max_on_coord = prev_max_on_coord;
|
||||
|
||||
prev_segment->last = point;
|
||||
prev_segment->pos = (FT_Short)( ( min_pos +
|
||||
max_pos ) >> 1 );
|
||||
prev_segment->last = point;
|
||||
prev_segment->pos = (FT_Short)( ( min_pos +
|
||||
max_pos ) >> 1 );
|
||||
prev_segment->delta = (FT_Short)( ( max_pos -
|
||||
min_pos ) >> 1 );
|
||||
|
||||
if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL &&
|
||||
( max_on_coord - min_on_coord ) < flat_threshold )
|
||||
|
|
@ -1627,9 +1722,11 @@
|
|||
if ( max_pos > prev_max_pos )
|
||||
prev_max_pos = max_pos;
|
||||
|
||||
prev_segment->last = point;
|
||||
prev_segment->pos = (FT_Short)( ( prev_min_pos +
|
||||
prev_max_pos ) >> 1 );
|
||||
prev_segment->last = point;
|
||||
prev_segment->pos = (FT_Short)( ( prev_min_pos +
|
||||
prev_max_pos ) >> 1 );
|
||||
prev_segment->delta = (FT_Short)( ( prev_max_pos -
|
||||
prev_min_pos ) >> 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1640,8 +1737,9 @@
|
|||
if ( prev_max_pos > max_pos )
|
||||
max_pos = prev_max_pos;
|
||||
|
||||
segment->last = point;
|
||||
segment->pos = (FT_Short)( ( min_pos + max_pos ) >> 1 );
|
||||
segment->last = point;
|
||||
segment->pos = (FT_Short)( ( min_pos + max_pos ) >> 1 );
|
||||
segment->delta = (FT_Short)( ( max_pos - min_pos ) >> 1 );
|
||||
|
||||
if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL &&
|
||||
( max_on_coord - min_on_coord ) < flat_threshold )
|
||||
|
|
@ -1951,6 +2049,10 @@
|
|||
FT_Memory memory = hints->memory;
|
||||
AF_LatinAxis laxis = &((AF_LatinMetrics)hints->metrics)->axis[dim];
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_PIC
|
||||
AF_FaceGlobals globals = hints->metrics->globals;
|
||||
#endif
|
||||
|
||||
AF_StyleClass style_class = hints->metrics->style_class;
|
||||
AF_ScriptClass script_class = AF_SCRIPT_CLASSES_GET
|
||||
[style_class->script];
|
||||
|
|
@ -2478,23 +2580,23 @@
|
|||
other_flags |= AF_LATIN_HINTS_VERT_SNAP;
|
||||
|
||||
/*
|
||||
* We adjust stems to full pixels only if we don't use the `light' mode.
|
||||
* We adjust stems to full pixels unless in `light' or `lcd' mode.
|
||||
*/
|
||||
if ( mode != FT_RENDER_MODE_LIGHT )
|
||||
if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
other_flags |= AF_LATIN_HINTS_MONO;
|
||||
|
||||
/*
|
||||
* In `light' hinting mode we disable horizontal hinting completely.
|
||||
* In `light' or `lcd' mode we disable horizontal hinting completely.
|
||||
* We also do it if the face is italic.
|
||||
*
|
||||
* However, if warping is enabled (which only works in `light' hinting
|
||||
* mode), advance widths get adjusted, too.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_LIGHT ||
|
||||
( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0 )
|
||||
if ( mode == FT_RENDER_MODE_LIGHT || mode == FT_RENDER_MODE_LCD ||
|
||||
( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0 )
|
||||
scaler_flags |= AF_SCALER_FLAG_NO_HORIZONTAL;
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
|
|
@ -2834,6 +2936,10 @@
|
|||
AF_Edge anchor = NULL;
|
||||
FT_Int has_serifs = 0;
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_PIC
|
||||
AF_FaceGlobals globals = hints->metrics->globals;
|
||||
#endif
|
||||
|
||||
AF_StyleClass style_class = hints->metrics->style_class;
|
||||
AF_ScriptClass script_class = AF_SCRIPT_CLASSES_GET
|
||||
[style_class->script];
|
||||
|
|
@ -3391,13 +3497,7 @@
|
|||
goto Exit;
|
||||
|
||||
/* analyze glyph outline */
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
if ( ( metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
|
||||
AF_HINTS_DO_WARP( hints ) ) ||
|
||||
AF_HINTS_DO_HORIZONTAL( hints ) )
|
||||
#else
|
||||
if ( AF_HINTS_DO_HORIZONTAL( hints ) )
|
||||
#endif
|
||||
{
|
||||
axis = &metrics->axis[AF_DIMENSION_HORZ];
|
||||
error = af_latin_hints_detect_features( hints,
|
||||
|
|
@ -3427,9 +3527,9 @@
|
|||
for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ )
|
||||
{
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
if ( dim == AF_DIMENSION_HORZ &&
|
||||
metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
|
||||
AF_HINTS_DO_WARP( hints ) )
|
||||
if ( dim == AF_DIMENSION_HORZ &&
|
||||
metrics->root.scaler.render_mode == FT_RENDER_MODE_NORMAL &&
|
||||
AF_HINTS_DO_WARP( hints ) )
|
||||
{
|
||||
AF_WarperRec warper;
|
||||
FT_Fixed scale;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
/* Auto-fitter hinting routines for latin writing system */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
/* */
|
||||
/* Auto-fitter hinting routines for latin writing system (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -23,6 +23,9 @@
|
|||
|
||||
#include FT_ADVANCES_H
|
||||
|
||||
|
||||
#ifdef FT_OPTION_AUTOFIT2
|
||||
|
||||
#include "afglobal.h"
|
||||
#include "aflatin.h"
|
||||
#include "aflatin2.h"
|
||||
|
|
@ -1555,20 +1558,20 @@
|
|||
other_flags |= AF_LATIN_HINTS_VERT_SNAP;
|
||||
|
||||
/*
|
||||
* We adjust stems to full pixels only if we don't use the `light' mode.
|
||||
* We adjust stems to full pixels unless in `light' or `lcd' mode.
|
||||
*/
|
||||
if ( mode != FT_RENDER_MODE_LIGHT )
|
||||
if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
other_flags |= AF_LATIN_HINTS_MONO;
|
||||
|
||||
/*
|
||||
* In `light' hinting mode we disable horizontal hinting completely.
|
||||
* In `light' or `lcd' mode we disable horizontal hinting completely.
|
||||
* We also do it if the face is italic.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_LIGHT ||
|
||||
( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0 )
|
||||
if ( mode == FT_RENDER_MODE_LIGHT || mode == FT_RENDER_MODE_LCD ||
|
||||
( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0 )
|
||||
scaler_flags |= AF_SCALER_FLAG_NO_HORIZONTAL;
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
|
|
@ -2337,13 +2340,7 @@
|
|||
goto Exit;
|
||||
|
||||
/* analyze glyph outline */
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
if ( ( metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
|
||||
AF_HINTS_DO_WARP( hints ) ) ||
|
||||
AF_HINTS_DO_HORIZONTAL( hints ) )
|
||||
#else
|
||||
if ( AF_HINTS_DO_HORIZONTAL( hints ) )
|
||||
#endif
|
||||
{
|
||||
error = af_latin2_hints_detect_features( hints, AF_DIMENSION_HORZ );
|
||||
if ( error )
|
||||
|
|
@ -2363,9 +2360,9 @@
|
|||
for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ )
|
||||
{
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
if ( dim == AF_DIMENSION_HORZ &&
|
||||
metrics->root.scaler.render_mode == FT_RENDER_MODE_LIGHT &&
|
||||
AF_HINTS_DO_WARP( hints ) )
|
||||
if ( dim == AF_DIMENSION_HORZ &&
|
||||
metrics->root.scaler.render_mode == FT_RENDER_MODE_NORMAL &&
|
||||
AF_HINTS_DO_WARP( hints ) )
|
||||
{
|
||||
AF_WarperRec warper;
|
||||
FT_Fixed scale;
|
||||
|
|
@ -2419,5 +2416,12 @@
|
|||
(AF_WritingSystem_ApplyHintsFunc) af_latin2_hints_apply /* style_hints_apply */
|
||||
)
|
||||
|
||||
#else /* !FT_OPTION_AUTOFIT2 */
|
||||
|
||||
/* ANSI C doesn't like empty source files */
|
||||
typedef int _af_latin2_dummy;
|
||||
|
||||
#endif /* !FT_OPTION_AUTOFIT2 */
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
/* Auto-fitter hinting routines for latin writing system */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter glyph loading routines (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -97,11 +97,13 @@
|
|||
AF_FaceGlobals globals = loader->globals;
|
||||
AF_WritingSystemClass writing_system_class;
|
||||
|
||||
FT_Size_Metrics* size_metrics = &face->size->internal->autohint_metrics;
|
||||
|
||||
FT_Pos stdVW = 0;
|
||||
FT_Pos stdHW = 0;
|
||||
|
||||
FT_Bool size_changed = face->size->metrics.x_ppem
|
||||
!= globals->stem_darkening_for_ppem;
|
||||
FT_Bool size_changed = size_metrics->x_ppem !=
|
||||
globals->stem_darkening_for_ppem;
|
||||
|
||||
FT_Fixed em_size = af_intToFixed( face->units_per_EM );
|
||||
FT_Fixed em_ratio = FT_DivFix( af_intToFixed( 1000 ), em_size );
|
||||
|
|
@ -112,7 +114,7 @@
|
|||
/* Skip stem darkening for broken fonts. */
|
||||
if ( !face->units_per_EM )
|
||||
{
|
||||
error = FT_Err_Corrupted_Font_Header;
|
||||
error = FT_ERR( Corrupted_Font_Header );
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
|
|
@ -130,7 +132,7 @@
|
|||
&stdVW );
|
||||
else
|
||||
{
|
||||
error = FT_Err_Unimplemented_Feature;
|
||||
error = FT_ERR( Unimplemented_Feature );
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
|
|
@ -145,11 +147,11 @@
|
|||
face,
|
||||
stdVW ) );
|
||||
darken_x = FT_DivFix( FT_MulFix( darken_by_font_units_x,
|
||||
face->size->metrics.x_scale ),
|
||||
size_metrics->x_scale ),
|
||||
em_ratio );
|
||||
|
||||
globals->standard_vertical_width = stdVW;
|
||||
globals->stem_darkening_for_ppem = face->size->metrics.x_ppem;
|
||||
globals->stem_darkening_for_ppem = size_metrics->x_ppem;
|
||||
globals->darken_x = af_fixedToInt( darken_x );
|
||||
}
|
||||
|
||||
|
|
@ -164,11 +166,11 @@
|
|||
face,
|
||||
stdHW ) );
|
||||
darken_y = FT_DivFix( FT_MulFix( darken_by_font_units_y,
|
||||
face->size->metrics.y_scale ),
|
||||
size_metrics->y_scale ),
|
||||
em_ratio );
|
||||
|
||||
globals->standard_horizontal_width = stdHW;
|
||||
globals->stem_darkening_for_ppem = face->size->metrics.x_ppem;
|
||||
globals->stem_darkening_for_ppem = size_metrics->x_ppem;
|
||||
globals->darken_y = af_fixedToInt( darken_y );
|
||||
|
||||
/*
|
||||
|
|
@ -217,15 +219,16 @@
|
|||
{
|
||||
FT_Error error;
|
||||
|
||||
FT_Size size = face->size;
|
||||
FT_GlyphSlot slot = face->glyph;
|
||||
FT_Slot_Internal internal = slot->internal;
|
||||
FT_GlyphLoader gloader = internal->loader;
|
||||
FT_Size size = face->size;
|
||||
FT_Size_Internal size_internal = size->internal;
|
||||
FT_GlyphSlot slot = face->glyph;
|
||||
FT_Slot_Internal slot_internal = slot->internal;
|
||||
FT_GlyphLoader gloader = slot_internal->loader;
|
||||
|
||||
AF_GlyphHints hints = loader->hints;
|
||||
AF_GlyphHints hints = loader->hints;
|
||||
AF_ScalerRec scaler;
|
||||
AF_StyleMetrics style_metrics;
|
||||
FT_UInt style_options = AF_STYLE_NONE_DFLT;
|
||||
FT_UInt style_options = AF_STYLE_NONE_DFLT;
|
||||
AF_StyleClass style_class;
|
||||
AF_WritingSystemClass writing_system_class;
|
||||
|
||||
|
|
@ -239,24 +242,65 @@
|
|||
|
||||
FT_ZERO( &scaler );
|
||||
|
||||
if ( !size_internal->autohint_metrics.x_scale ||
|
||||
size_internal->autohint_mode != FT_LOAD_TARGET_MODE( load_flags ) )
|
||||
{
|
||||
/* switching between hinting modes usually means different scaling */
|
||||
/* values; this later on enforces recomputation of everything */
|
||||
/* related to the current size */
|
||||
|
||||
size_internal->autohint_mode = FT_LOAD_TARGET_MODE( load_flags );
|
||||
size_internal->autohint_metrics = size->metrics;
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_TT_SIZE_METRICS
|
||||
{
|
||||
FT_Size_Metrics* size_metrics = &size_internal->autohint_metrics;
|
||||
|
||||
|
||||
/* set metrics to integer values and adjust scaling accordingly; */
|
||||
/* this is the same setup as with TrueType fonts, cf. function */
|
||||
/* `tt_size_reset' in file `ttobjs.c' */
|
||||
size_metrics->ascender = FT_PIX_ROUND(
|
||||
FT_MulFix( face->ascender,
|
||||
size_metrics->y_scale ) );
|
||||
size_metrics->descender = FT_PIX_ROUND(
|
||||
FT_MulFix( face->descender,
|
||||
size_metrics->y_scale ) );
|
||||
size_metrics->height = FT_PIX_ROUND(
|
||||
FT_MulFix( face->height,
|
||||
size_metrics->y_scale ) );
|
||||
|
||||
size_metrics->x_scale = FT_DivFix( size_metrics->x_ppem << 6,
|
||||
face->units_per_EM );
|
||||
size_metrics->y_scale = FT_DivFix( size_metrics->y_ppem << 6,
|
||||
face->units_per_EM );
|
||||
size_metrics->max_advance = FT_PIX_ROUND(
|
||||
FT_MulFix( face->max_advance_width,
|
||||
size_metrics->x_scale ) );
|
||||
}
|
||||
#endif /* AF_CONFIG_OPTION_TT_SIZE_METRICS */
|
||||
}
|
||||
|
||||
/*
|
||||
* TODO: This code currently doesn't support fractional advance widths,
|
||||
* i.e. placing hinted glyphs at anything other than integer
|
||||
* i.e., placing hinted glyphs at anything other than integer
|
||||
* x-positions. This is only relevant for the warper code, which
|
||||
* scales and shifts glyphs to optimize blackness of stems (hinting on
|
||||
* the x-axis by nature places things on pixel integers, hinting on the
|
||||
* y-axis only, i.e. LIGHT mode, doesn't touch the x-axis). The delta
|
||||
* y-axis only, i.e., LIGHT mode, doesn't touch the x-axis). The delta
|
||||
* values of the scaler would need to be adjusted.
|
||||
*/
|
||||
scaler.face = face;
|
||||
scaler.x_scale = size->metrics.x_scale;
|
||||
scaler.x_scale = size_internal->autohint_metrics.x_scale;
|
||||
scaler.x_delta = 0;
|
||||
scaler.y_scale = size->metrics.y_scale;
|
||||
scaler.y_scale = size_internal->autohint_metrics.y_scale;
|
||||
scaler.y_delta = 0;
|
||||
|
||||
scaler.render_mode = FT_LOAD_TARGET_MODE( load_flags );
|
||||
scaler.flags = 0;
|
||||
|
||||
/* note that the fallback style can't be changed anymore */
|
||||
/* after the first call of `af_loader_load_glyph' */
|
||||
error = af_loader_reset( loader, module, face );
|
||||
if ( error )
|
||||
goto Exit;
|
||||
|
|
@ -334,18 +378,24 @@
|
|||
* `standard_{vertical,horizontal}_width' change.
|
||||
*
|
||||
* Ignore errors and carry on without emboldening.
|
||||
*
|
||||
*/
|
||||
if ( !module->no_stem_darkening )
|
||||
|
||||
/* stem darkening only works well in `light' mode */
|
||||
if ( scaler.render_mode == FT_RENDER_MODE_LIGHT &&
|
||||
( !face->internal->no_stem_darkening ||
|
||||
( face->internal->no_stem_darkening < 0 &&
|
||||
!module->no_stem_darkening ) ) )
|
||||
af_loader_embolden_glyph_in_slot( loader, face, style_metrics );
|
||||
|
||||
loader->transformed = internal->glyph_transformed;
|
||||
loader->transformed = slot_internal->glyph_transformed;
|
||||
if ( loader->transformed )
|
||||
{
|
||||
FT_Matrix inverse;
|
||||
|
||||
|
||||
loader->trans_matrix = internal->glyph_matrix;
|
||||
loader->trans_delta = internal->glyph_delta;
|
||||
loader->trans_matrix = slot_internal->glyph_matrix;
|
||||
loader->trans_delta = slot_internal->glyph_delta;
|
||||
|
||||
inverse = loader->trans_matrix;
|
||||
if ( !FT_Matrix_Invert( &inverse ) )
|
||||
|
|
@ -375,18 +425,11 @@
|
|||
|
||||
/* now load the slot image into the auto-outline */
|
||||
/* and run the automatic hinting process */
|
||||
{
|
||||
#ifdef FT_CONFIG_OPTION_PIC
|
||||
AF_FaceGlobals globals = loader->globals;
|
||||
#endif
|
||||
|
||||
|
||||
if ( writing_system_class->style_hints_apply )
|
||||
writing_system_class->style_hints_apply( glyph_index,
|
||||
hints,
|
||||
&gloader->base.outline,
|
||||
style_metrics );
|
||||
}
|
||||
if ( writing_system_class->style_hints_apply )
|
||||
writing_system_class->style_hints_apply( glyph_index,
|
||||
hints,
|
||||
&gloader->base.outline,
|
||||
style_metrics );
|
||||
|
||||
/* we now need to adjust the metrics according to the change in */
|
||||
/* width/positioning that occurred during the hinting process */
|
||||
|
|
@ -408,6 +451,8 @@
|
|||
old_lsb = edge1->opos /* - loader->pp1.x */;
|
||||
new_lsb = edge1->pos;
|
||||
|
||||
/* remember unhinted values to later account */
|
||||
/* for rounding errors */
|
||||
pp1x_uh = new_lsb - old_lsb;
|
||||
pp2x_uh = edge2->pos + old_rsb;
|
||||
|
||||
|
|
@ -438,21 +483,23 @@
|
|||
FT_Pos pp2x = loader->pp2.x;
|
||||
|
||||
|
||||
loader->pp1.x = FT_PIX_ROUND( pp1x );
|
||||
loader->pp2.x = FT_PIX_ROUND( pp2x );
|
||||
loader->pp1.x = FT_PIX_ROUND( pp1x + hints->xmin_delta );
|
||||
loader->pp2.x = FT_PIX_ROUND( pp2x + hints->xmax_delta );
|
||||
|
||||
slot->lsb_delta = loader->pp1.x - pp1x;
|
||||
slot->rsb_delta = loader->pp2.x - pp2x;
|
||||
}
|
||||
}
|
||||
/* `light' mode uses integer advance widths */
|
||||
/* but sets `lsb_delta' and `rsb_delta' */
|
||||
else
|
||||
{
|
||||
FT_Pos pp1x = loader->pp1.x;
|
||||
FT_Pos pp2x = loader->pp2.x;
|
||||
|
||||
|
||||
loader->pp1.x = FT_PIX_ROUND( pp1x + hints->xmin_delta );
|
||||
loader->pp2.x = FT_PIX_ROUND( pp2x + hints->xmax_delta );
|
||||
loader->pp1.x = FT_PIX_ROUND( pp1x );
|
||||
loader->pp2.x = FT_PIX_ROUND( pp2x );
|
||||
|
||||
slot->lsb_delta = loader->pp1.x - pp1x;
|
||||
slot->rsb_delta = loader->pp2.x - pp2x;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter glyph loading routines (specification). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter module implementation (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_INTERNAL_DEBUG_H
|
||||
#include FT_AUTOHINTER_H
|
||||
#include FT_DRIVER_H
|
||||
#include FT_SERVICE_PROPERTIES_H
|
||||
|
||||
|
||||
|
|
@ -104,6 +104,19 @@
|
|||
}
|
||||
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_PIC
|
||||
|
||||
#undef AF_SCRIPT_CLASSES_GET
|
||||
#define AF_SCRIPT_CLASSES_GET \
|
||||
( GET_PIC( ft_module->library )->af_script_classes )
|
||||
|
||||
#undef AF_STYLE_CLASSES_GET
|
||||
#define AF_STYLE_CLASSES_GET \
|
||||
( GET_PIC( ft_module->library )->af_style_classes )
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
static FT_Error
|
||||
af_property_set( FT_Module ft_module,
|
||||
const char* property_name,
|
||||
|
|
@ -291,12 +304,10 @@
|
|||
long nsd = ft_strtol( s, NULL, 10 );
|
||||
|
||||
|
||||
if ( nsd == 0 )
|
||||
module->no_stem_darkening = 0;
|
||||
else if ( nsd == 1 )
|
||||
module->no_stem_darkening = 1;
|
||||
if ( !nsd )
|
||||
module->no_stem_darkening = FALSE;
|
||||
else
|
||||
return FT_THROW( Invalid_Argument );
|
||||
module->no_stem_darkening = TRUE;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter module implementation (specification). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType position independent code services for autofit module. */
|
||||
/* */
|
||||
/* Copyright 2009-2016 by */
|
||||
/* Copyright 2009-2018 by */
|
||||
/* Oran Agra and Mickey Gabel. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType position independent code services for autofit module. */
|
||||
/* */
|
||||
/* Copyright 2009-2016 by */
|
||||
/* Copyright 2009-2018 by */
|
||||
/* Oran Agra and Mickey Gabel. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -69,7 +69,7 @@ FT_BEGIN_HEADER
|
|||
|
||||
|
||||
#define GET_PIC( lib ) \
|
||||
( (AFModulePIC*)((lib)->pic_container.autofit) )
|
||||
( (AFModulePIC*)( (lib)->pic_container.autofit ) )
|
||||
|
||||
#define AF_SERVICES_GET \
|
||||
( GET_PIC( library )->af_services )
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter Unicode script ranges (body). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -52,8 +52,21 @@
|
|||
/* not be affected by blue zones, regardless of whether this is a */
|
||||
/* spacing or no-spacing glyph */
|
||||
|
||||
/* the `ta_xxxx_nonbase_uniranges' ranges must be strict subsets */
|
||||
/* of the corresponding `ta_xxxx_uniranges' ranges */
|
||||
/* the `af_xxxx_nonbase_uniranges' ranges must be strict subsets */
|
||||
/* of the corresponding `af_xxxx_uniranges' ranges */
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_adlm_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1E900, 0x1E95F ), /* Adlam */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_adlm_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1D944, 0x1E94A ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_arab_uniranges[] =
|
||||
|
|
@ -78,7 +91,7 @@
|
|||
AF_UNIRANGE_REC( 0x06E7, 0x06E8 ),
|
||||
AF_UNIRANGE_REC( 0x06EA, 0x06ED ),
|
||||
AF_UNIRANGE_REC( 0x08D4, 0x08E1 ),
|
||||
AF_UNIRANGE_REC( 0x08E3, 0x08FF ),
|
||||
AF_UNIRANGE_REC( 0x08D3, 0x08FF ),
|
||||
AF_UNIRANGE_REC( 0xFBB2, 0xFBC1 ),
|
||||
AF_UNIRANGE_REC( 0xFE70, 0xFE70 ),
|
||||
AF_UNIRANGE_REC( 0xFE72, 0xFE72 ),
|
||||
|
|
@ -106,6 +119,37 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_avst_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10B00, 0x10B3F ), /* Avestan */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_avst_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10B39, 0x10B3F ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_bamu_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA6A0, 0xA6FF ), /* Bamum */
|
||||
#if 0
|
||||
/* The characters in the Bamum supplement are pictograms, */
|
||||
/* not (directly) related to the syllabic Bamum script */
|
||||
AF_UNIRANGE_REC( 0x16800, 0x16A3F ), /* Bamum Supplement */
|
||||
#endif
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_bamu_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA6F0, 0xA6F1 ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_beng_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0980, 0x09FF ), /* Bengali */
|
||||
|
|
@ -119,10 +163,64 @@
|
|||
AF_UNIRANGE_REC( 0x09C1, 0x09C4 ),
|
||||
AF_UNIRANGE_REC( 0x09CD, 0x09CD ),
|
||||
AF_UNIRANGE_REC( 0x09E2, 0x09E3 ),
|
||||
AF_UNIRANGE_REC( 0x09FE, 0x09FE ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_buhd_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1740, 0x175F ), /* Buhid */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_buhd_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1752, 0x1753 ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_cakm_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x11100, 0x1114F ), /* Chakma */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_cakm_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x11100, 0x11102 ),
|
||||
AF_UNIRANGE_REC( 0x11127, 0x11134 ),
|
||||
AF_UNIRANGE_REC( 0x11146, 0x11146 ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_cans_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1400, 0x167F ), /* Unified Canadian Aboriginal Syllabics */
|
||||
AF_UNIRANGE_REC( 0x18B0, 0x18FF ), /* Unified Canadian Aboriginal Syllabics Extended */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_cans_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_cari_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x102A0, 0x102DF ), /* Carian */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_cari_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_cher_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x13A0, 0x13FF ), /* Cherokee */
|
||||
|
|
@ -136,6 +234,31 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_copt_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x2C80, 0x2CFF ), /* Coptic */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_copt_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x2CEF, 0x2CF1 ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_cprt_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10800, 0x1083F ), /* Cypriot */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_cprt_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_cyrl_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0400, 0x04FF ), /* Cyrillic */
|
||||
|
|
@ -183,10 +306,23 @@
|
|||
AF_UNIRANGE_REC( 0x0953, 0x0957 ),
|
||||
AF_UNIRANGE_REC( 0x0962, 0x0963 ),
|
||||
AF_UNIRANGE_REC( 0xA8E0, 0xA8F1 ),
|
||||
AF_UNIRANGE_REC( 0xA8FF, 0xA8FF ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_dsrt_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10400, 0x1044F ), /* Deseret */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_dsrt_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_ethi_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1200, 0x137F ), /* Ethiopic */
|
||||
|
|
@ -205,11 +341,8 @@
|
|||
|
||||
const AF_Script_UniRangeRec af_geor_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10D0, 0x10FF ), /* Georgian (Mkhedruli) */
|
||||
#if 0
|
||||
/* the following range is proposed for inclusion in Unicode */
|
||||
AF_UNIRANGE_REC( 0x1C90, 0x1CBF ), /* Georgian (Mtavruli) */
|
||||
#endif
|
||||
AF_UNIRANGE_REC( 0x10D0, 0x10FF ), /* Georgian (Mkhedruli) */
|
||||
AF_UNIRANGE_REC( 0x1C90, 0x1CBF ), /* Georgian Extended (Mtavruli) */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
|
@ -222,8 +355,8 @@
|
|||
const AF_Script_UniRangeRec af_geok_uniranges[] =
|
||||
{
|
||||
/* Khutsuri */
|
||||
AF_UNIRANGE_REC( 0x10A0, 0x10CD ), /* Georgian (Asomtavruli) */
|
||||
AF_UNIRANGE_REC( 0x2D00, 0x2D2D ), /* Georgian (Nuskhuri) */
|
||||
AF_UNIRANGE_REC( 0x10A0, 0x10CD ), /* Georgian (Asomtavruli) */
|
||||
AF_UNIRANGE_REC( 0x2D00, 0x2D2D ), /* Georgian Supplement (Nuskhuri) */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
|
@ -233,6 +366,32 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_glag_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x2C00, 0x2C5F ), /* Glagolitic */
|
||||
AF_UNIRANGE_REC( 0x1E000, 0x1E02F ), /* Glagolitic Supplement */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_glag_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1E000, 0x1E02F ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_goth_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10330, 0x1034F ), /* Gothic */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_goth_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_grek_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0370, 0x03FF ), /* Greek and Coptic */
|
||||
|
|
@ -266,6 +425,7 @@
|
|||
AF_UNIRANGE_REC( 0x0AC1, 0x0AC8 ),
|
||||
AF_UNIRANGE_REC( 0x0ACD, 0x0ACD ),
|
||||
AF_UNIRANGE_REC( 0x0AE2, 0x0AE3 ),
|
||||
AF_UNIRANGE_REC( 0x0AFA, 0x0AFF ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
|
@ -305,6 +465,19 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_kali_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA900, 0xA92F ), /* Kayah Li */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_kali_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA926, 0xA92D ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_knda_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0C80, 0x0CFF ), /* Kannada */
|
||||
|
|
@ -463,6 +636,18 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_lisu_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA4D0, 0xA4FF ), /* Lisu */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_lisu_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_mlym_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0D00, 0x0D7F ), /* Malayalam */
|
||||
|
|
@ -471,7 +656,8 @@
|
|||
|
||||
const AF_Script_UniRangeRec af_mlym_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0D01, 0x0D01 ),
|
||||
AF_UNIRANGE_REC( 0x0D00, 0x0D01 ),
|
||||
AF_UNIRANGE_REC( 0x0D3B, 0x0D3C ),
|
||||
AF_UNIRANGE_REC( 0x0D4D, 0x0D4E ),
|
||||
AF_UNIRANGE_REC( 0x0D62, 0x0D63 ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
|
|
@ -480,27 +666,41 @@
|
|||
|
||||
const AF_Script_UniRangeRec af_mymr_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1000, 0x109F ), /* Myanmar */
|
||||
AF_UNIRANGE_REC( 0xA9E0, 0xA9FF ), /* Myanmar Extended-B */
|
||||
AF_UNIRANGE_REC( 0xAA60, 0xAA7F ), /* Myanmar Extended-A */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
AF_UNIRANGE_REC( 0x1000, 0x109F ), /* Myanmar */
|
||||
AF_UNIRANGE_REC( 0xA9E0, 0xA9FF ), /* Myanmar Extended-B */
|
||||
AF_UNIRANGE_REC( 0xAA60, 0xAA7F ), /* Myanmar Extended-A */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_mymr_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x102D, 0x1030 ),
|
||||
AF_UNIRANGE_REC( 0x1032, 0x1037 ),
|
||||
AF_UNIRANGE_REC( 0x103A, 0x103A ),
|
||||
AF_UNIRANGE_REC( 0x103D, 0x103E ),
|
||||
AF_UNIRANGE_REC( 0x1058, 0x1059 ),
|
||||
AF_UNIRANGE_REC( 0x105E, 0x1060 ),
|
||||
AF_UNIRANGE_REC( 0x1071, 0x1074 ),
|
||||
AF_UNIRANGE_REC( 0x1082, 0x1082 ),
|
||||
AF_UNIRANGE_REC( 0x1085, 0x1086 ),
|
||||
AF_UNIRANGE_REC( 0x108D, 0x108D ),
|
||||
AF_UNIRANGE_REC( 0xA9E5, 0xA9E5 ),
|
||||
AF_UNIRANGE_REC( 0xAA7C, 0xAA7C ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
AF_UNIRANGE_REC( 0x102D, 0x1030 ),
|
||||
AF_UNIRANGE_REC( 0x1032, 0x1037 ),
|
||||
AF_UNIRANGE_REC( 0x103A, 0x103A ),
|
||||
AF_UNIRANGE_REC( 0x103D, 0x103E ),
|
||||
AF_UNIRANGE_REC( 0x1058, 0x1059 ),
|
||||
AF_UNIRANGE_REC( 0x105E, 0x1060 ),
|
||||
AF_UNIRANGE_REC( 0x1071, 0x1074 ),
|
||||
AF_UNIRANGE_REC( 0x1082, 0x1082 ),
|
||||
AF_UNIRANGE_REC( 0x1085, 0x1086 ),
|
||||
AF_UNIRANGE_REC( 0x108D, 0x108D ),
|
||||
AF_UNIRANGE_REC( 0xA9E5, 0xA9E5 ),
|
||||
AF_UNIRANGE_REC( 0xAA7C, 0xAA7C ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_nkoo_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x07C0, 0x07FF ), /* N'Ko */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_nkoo_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x07EB, 0x07F5 ),
|
||||
AF_UNIRANGE_REC( 0x07FD, 0x07FD ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -515,6 +715,80 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_olck_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1C50, 0x1C7F ), /* Ol Chiki */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_olck_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_orkh_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10C00, 0x10C4F ), /* Old Turkic */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_orkh_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_osge_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x104B0, 0x104FF ), /* Osage */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_osge_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_osma_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10480, 0x104AF ), /* Osmanya */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_osma_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_saur_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA880, 0xA8DF ), /* Saurashtra */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_saur_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA880, 0xA881 ),
|
||||
AF_UNIRANGE_REC( 0xA8B4, 0xA8C5 ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_shaw_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x10450, 0x1047F ), /* Shavian */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_shaw_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_sinh_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0D80, 0x0DFF ), /* Sinhala */
|
||||
|
|
@ -529,6 +803,21 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_sund_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1B80, 0x1BBF ), /* Sundanese */
|
||||
AF_UNIRANGE_REC( 0x1CC0, 0x1CCF ), /* Sundanese Supplement */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_sund_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1B80, 0x1B82 ),
|
||||
AF_UNIRANGE_REC( 0x1BA1, 0x1BAD ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_taml_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0B80, 0x0BFF ), /* Tamil */
|
||||
|
|
@ -544,6 +833,23 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_tavt_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xAA80, 0xAADF ), /* Tai Viet */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_tavt_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xAAB0, 0xAAB0 ),
|
||||
AF_UNIRANGE_REC( 0xAAB2, 0xAAB4 ),
|
||||
AF_UNIRANGE_REC( 0xAAB7, 0xAAB8 ),
|
||||
AF_UNIRANGE_REC( 0xAABE, 0xAABF ),
|
||||
AF_UNIRANGE_REC( 0xAAC1, 0xAAC1 ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_telu_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0C00, 0x0C7F ), /* Telugu */
|
||||
|
|
@ -553,6 +859,7 @@
|
|||
const AF_Script_UniRangeRec af_telu_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0C00, 0x0C00 ),
|
||||
AF_UNIRANGE_REC( 0x0C04, 0x0C04 ),
|
||||
AF_UNIRANGE_REC( 0x0C3E, 0x0C40 ),
|
||||
AF_UNIRANGE_REC( 0x0C46, 0x0C56 ),
|
||||
AF_UNIRANGE_REC( 0x0C62, 0x0C63 ),
|
||||
|
|
@ -575,6 +882,30 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_tfng_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x2D30, 0x2D7F ), /* Tifinagh */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_tfng_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_vaii_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA500, 0xA63F ), /* Vai */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_vaii_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_INDIC
|
||||
|
||||
const AF_Script_UniRangeRec af_limb_uniranges[] =
|
||||
|
|
@ -610,21 +941,6 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_sund_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1B80, 0x1BBF ), /* Sundanese */
|
||||
AF_UNIRANGE_REC( 0x1CC0, 0x1CCF ), /* Sundanese Supplement */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_sund_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1B80, 0x1B82 ),
|
||||
AF_UNIRANGE_REC( 0x1BA1, 0x1BAD ),
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_sylo_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0xA800, 0xA82F ), /* Syloti Nagri */
|
||||
|
|
@ -694,10 +1010,13 @@
|
|||
AF_UNIRANGE_REC( 0xFE30, 0xFE4F ), /* CJK Compatibility Forms */
|
||||
AF_UNIRANGE_REC( 0xFF00, 0xFFEF ), /* Halfwidth and Fullwidth Forms */
|
||||
AF_UNIRANGE_REC( 0x1B000, 0x1B0FF ), /* Kana Supplement */
|
||||
AF_UNIRANGE_REC( 0x1B100, 0x1B12F ), /* Kana Extended-A */
|
||||
AF_UNIRANGE_REC( 0x1D300, 0x1D35F ), /* Tai Xuan Hing Symbols */
|
||||
AF_UNIRANGE_REC( 0x20000, 0x2A6DF ), /* CJK Unified Ideographs Extension B */
|
||||
AF_UNIRANGE_REC( 0x2A700, 0x2B73F ), /* CJK Unified Ideographs Extension C */
|
||||
AF_UNIRANGE_REC( 0x2B740, 0x2B81F ), /* CJK Unified Ideographs Extension D */
|
||||
AF_UNIRANGE_REC( 0x2B820, 0x2CEAF ), /* CJK Unified Ideographs Extension E */
|
||||
AF_UNIRANGE_REC( 0x2CEB0, 0x2EBEF ), /* CJK Unified Ideographs Extension F */
|
||||
AF_UNIRANGE_REC( 0x2F800, 0x2FA1F ), /* CJK Compatibility Ideographs Supplement */
|
||||
AF_UNIRANGE_REC( 0, 0 )
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter Unicode script ranges (specification). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter scripts (specification only). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -30,6 +30,12 @@
|
|||
/* use `HB_SCRIPT_INVALID' as the HarfBuzz script name tag for */
|
||||
/* them. */
|
||||
|
||||
SCRIPT( adlm, ADLM,
|
||||
"Adlam",
|
||||
HB_SCRIPT_ADLAM,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x9E\xA4\x8C \xF0\x9E\xA4\xAE" ) /* 𞤌 𞤮 */
|
||||
|
||||
SCRIPT( arab, ARAB,
|
||||
"Arabic",
|
||||
HB_SCRIPT_ARABIC,
|
||||
|
|
@ -42,6 +48,18 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xD5\xBD \xD5\x8D" ) /* ս Ս */
|
||||
|
||||
SCRIPT( avst, AVST,
|
||||
"Avestan",
|
||||
HB_SCRIPT_AVESTAN,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\xAC\x9A" ) /* 𐬚 */
|
||||
|
||||
SCRIPT( bamu, BAMU,
|
||||
"Bamum",
|
||||
HB_SCRIPT_BAMUM,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xEA\x9B\x81 \xEA\x9B\xAF" ) /* ꛁ ꛯ */
|
||||
|
||||
/* there are no simple forms for letters; we thus use two digit shapes */
|
||||
SCRIPT( beng, BENG,
|
||||
"Bengali",
|
||||
|
|
@ -49,12 +67,48 @@
|
|||
HINTING_TOP_TO_BOTTOM,
|
||||
"\xE0\xA7\xA6 \xE0\xA7\xAA" ) /* ০ ৪ */
|
||||
|
||||
SCRIPT( buhd, BUHD,
|
||||
"Buhid",
|
||||
HB_SCRIPT_BUHID,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\x9D\x8B \xE1\x9D\x8F" ) /* ᝋ ᝏ */
|
||||
|
||||
SCRIPT( cakm, CAKM,
|
||||
"Chakma",
|
||||
HB_SCRIPT_CHAKMA,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x91\x84\xA4 \xF0\x91\x84\x89 \xF0\x91\x84\x9B" ) /* 𑄤 𑄉 𑄛 */
|
||||
|
||||
SCRIPT( cans, CANS,
|
||||
"Canadian Syllabics",
|
||||
HB_SCRIPT_CANADIAN_SYLLABICS,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\x91\x8C \xE1\x93\x9A" ) /* ᑌ ᓚ */
|
||||
|
||||
SCRIPT( cari, CARI,
|
||||
"Carian",
|
||||
HB_SCRIPT_CARIAN,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\x8A\xAB \xF0\x90\x8B\x89" ) /* 𐊫 𐋉 */
|
||||
|
||||
SCRIPT( cher, CHER,
|
||||
"Cherokee",
|
||||
HB_SCRIPT_CHEROKEE,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\x8E\xA4 \xE1\x8F\x85 \xEA\xAE\x95" ) /* Ꭴ Ꮕ ꮕ */
|
||||
|
||||
SCRIPT( copt, COPT,
|
||||
"Coptic",
|
||||
HB_SCRIPT_COPTIC,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE2\xB2\x9E \xE2\xB2\x9F" ) /* Ⲟ ⲟ */
|
||||
|
||||
SCRIPT( cprt, CPRT,
|
||||
"Cypriot",
|
||||
HB_SCRIPT_CYPRIOT,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\xA0\x85 \xF0\x90\xA0\xA3" ) /* 𐠅 𐠣 */
|
||||
|
||||
SCRIPT( cyrl, CYRL,
|
||||
"Cyrillic",
|
||||
HB_SCRIPT_CYRILLIC,
|
||||
|
|
@ -67,6 +121,12 @@
|
|||
HINTING_TOP_TO_BOTTOM,
|
||||
"\xE0\xA4\xA0 \xE0\xA4\xB5 \xE0\xA4\x9F" ) /* ठ व ट */
|
||||
|
||||
SCRIPT( dsrt, DSRT,
|
||||
"Deseret",
|
||||
HB_SCRIPT_DESERET,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\x90\x84 \xF0\x90\x90\xAC" ) /* 𐐄 𐐬 */
|
||||
|
||||
SCRIPT( ethi, ETHI,
|
||||
"Ethiopic",
|
||||
HB_SCRIPT_ETHIOPIC,
|
||||
|
|
@ -77,7 +137,7 @@
|
|||
"Georgian (Mkhedruli)",
|
||||
HB_SCRIPT_GEORGIAN,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\x83\x98 \xE1\x83\x94 \xE1\x83\x90" ) /* ი ე ა */
|
||||
"\xE1\x83\x98 \xE1\x83\x94 \xE1\x83\x90 \xE1\xB2\xBF" ) /* ი ე ა Ი */
|
||||
|
||||
SCRIPT( geok, GEOK,
|
||||
"Georgian (Khutsuri)",
|
||||
|
|
@ -85,6 +145,18 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\x82\xB6 \xE1\x82\xB1 \xE2\xB4\x99" ) /* Ⴖ Ⴑ ⴙ */
|
||||
|
||||
SCRIPT( glag, GLAG,
|
||||
"Glagolitic",
|
||||
HB_SCRIPT_GLAGOLITIC,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE2\xB0\x95 \xE2\xB1\x85" ) /* Ⱅ ⱅ */
|
||||
|
||||
SCRIPT( goth, GOTH,
|
||||
"Gothic",
|
||||
HB_SCRIPT_GOTHIC,
|
||||
HINTING_TOP_TO_BOTTOM,
|
||||
"\xF0\x90\x8C\xB4 \xF0\x90\x8C\xBE \xF0\x90\x8D\x83" ) /* 𐌴 𐌾 𐍃 */
|
||||
|
||||
SCRIPT( grek, GREK,
|
||||
"Greek",
|
||||
HB_SCRIPT_GREEK,
|
||||
|
|
@ -109,11 +181,11 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xD7\x9D" ) /* ם */
|
||||
|
||||
SCRIPT( knda, KNDA,
|
||||
"Kannada",
|
||||
HB_SCRIPT_KANNADA,
|
||||
SCRIPT( kali, KALI,
|
||||
"Kayah Li",
|
||||
HB_SCRIPT_KAYAH_LI,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE0\xB3\xA6 \xE0\xB2\xAC" ) /* ೦ ಬ */
|
||||
"\xEA\xA4\x8D \xEA\xA4\x80" ) /* ꤍ ꤀ */
|
||||
|
||||
/* only digit zero has a simple shape in the Khmer script */
|
||||
SCRIPT( khmr, KHMR,
|
||||
|
|
@ -128,6 +200,12 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\xA7\xA1 \xE1\xA7\xAA" ) /* ᧡ ᧪ */
|
||||
|
||||
SCRIPT( knda, KNDA,
|
||||
"Kannada",
|
||||
HB_SCRIPT_KANNADA,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE0\xB3\xA6 \xE0\xB2\xAC" ) /* ೦ ಬ */
|
||||
|
||||
/* only digit zero has a simple shape in the Lao script */
|
||||
SCRIPT( lao, LAO,
|
||||
"Lao",
|
||||
|
|
@ -153,6 +231,12 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\xB5\x92 \xE1\xB4\xBC \xE2\x81\xB0" ) /* ᵒ ᴼ ⁰ */
|
||||
|
||||
SCRIPT( lisu, LISU,
|
||||
"Lisu",
|
||||
HB_SCRIPT_LISU,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xEA\x93\xB3" ) /* ꓳ */
|
||||
|
||||
SCRIPT( mlym, MLYM,
|
||||
"Malayalam",
|
||||
HB_SCRIPT_MALAYALAM,
|
||||
|
|
@ -165,18 +249,67 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\x80\x9D \xE1\x80\x84 \xE1\x80\x82" ) /* ဝ င ဂ */
|
||||
|
||||
SCRIPT( nkoo, NKOO,
|
||||
"N'Ko",
|
||||
HB_SCRIPT_NKO,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xDF\x8B \xDF\x80" ) /* ߋ ߀ */
|
||||
|
||||
SCRIPT( none, NONE,
|
||||
"no script",
|
||||
HB_SCRIPT_INVALID,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"" )
|
||||
|
||||
SCRIPT( olck, OLCK,
|
||||
"Ol Chiki",
|
||||
HB_SCRIPT_OL_CHIKI,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\xB1\x9B" ) /* ᱛ */
|
||||
|
||||
SCRIPT( orkh, ORKH,
|
||||
"Old Turkic",
|
||||
HB_SCRIPT_OLD_TURKIC,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\xB0\x97" ) /* 𐰗 */
|
||||
|
||||
SCRIPT( osge, OSGE,
|
||||
"Osage",
|
||||
HB_SCRIPT_OSAGE,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\x93\x82 \xF0\x90\x93\xAA" ) /* 𐓂 𐓪 */
|
||||
|
||||
SCRIPT( osma, OSMA,
|
||||
"Osmanya",
|
||||
HB_SCRIPT_OSMANYA,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\x92\x86 \xF0\x90\x92\xA0" ) /* 𐒆 𐒠 */
|
||||
|
||||
SCRIPT( saur, SAUR,
|
||||
"Saurashtra",
|
||||
HB_SCRIPT_SAURASHTRA,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xEA\xA2\x9D \xEA\xA3\x90" ) /* ꢝ ꣐ */
|
||||
|
||||
SCRIPT( shaw, SHAW,
|
||||
"Shavian",
|
||||
HB_SCRIPT_SHAVIAN,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xF0\x90\x91\xB4" ) /* 𐑴 */
|
||||
|
||||
SCRIPT( sinh, SINH,
|
||||
"Sinhala",
|
||||
HB_SCRIPT_SINHALA,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE0\xB6\xA7" ) /* ට */
|
||||
|
||||
/* only digit zero has a simple (round) shape in the Sundanese script */
|
||||
SCRIPT( sund, SUND,
|
||||
"Sundanese",
|
||||
HB_SCRIPT_SUNDANESE,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE1\xAE\xB0" ) /* ᮰ */
|
||||
|
||||
/* only digit zero has a simple (round) shape in the Tamil script */
|
||||
SCRIPT( taml, TAML,
|
||||
"Tamil",
|
||||
|
|
@ -184,6 +317,12 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE0\xAF\xA6" ) /* ௦ */
|
||||
|
||||
SCRIPT( tavt, TAVT,
|
||||
"Tai Viet",
|
||||
HB_SCRIPT_TAI_VIET,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xEA\xAA\x92 \xEA\xAA\xAB" ) /* ꪒ ꪫ */
|
||||
|
||||
/* there are no simple forms for letters; we thus use two digit shapes */
|
||||
SCRIPT( telu, TELU,
|
||||
"Telugu",
|
||||
|
|
@ -191,12 +330,24 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE0\xB1\xA6 \xE0\xB1\xA7" ) /* ౦ ౧ */
|
||||
|
||||
SCRIPT( tfng, TFNG,
|
||||
"Tifinagh",
|
||||
HB_SCRIPT_TIFINAGH,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE2\xB5\x94" ) /* ⵔ */
|
||||
|
||||
SCRIPT( thai, THAI,
|
||||
"Thai",
|
||||
HB_SCRIPT_THAI,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xE0\xB8\xB2 \xE0\xB9\x85 \xE0\xB9\x90" ) /* า ๅ ๐ */
|
||||
|
||||
SCRIPT( vaii, VAII,
|
||||
"Vai",
|
||||
HB_SCRIPT_VAI,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"\xEA\x98\x93 \xEA\x96\x9C \xEA\x96\xB4" ) /* ꘓ ꖜ ꖴ */
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_INDIC
|
||||
|
||||
SCRIPT( limb, LIMB,
|
||||
|
|
@ -211,12 +362,6 @@
|
|||
HINTING_BOTTOM_TO_TOP,
|
||||
"o" ) /* XXX */
|
||||
|
||||
SCRIPT( sund, SUND,
|
||||
"Sundanese",
|
||||
HB_SCRIPT_SUNDANESE,
|
||||
HINTING_BOTTOM_TO_TOP,
|
||||
"o" ) /* XXX */
|
||||
|
||||
SCRIPT( sylo, SYLO,
|
||||
"Syloti Nagri",
|
||||
HB_SCRIPT_SYLOTI_NAGRI,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* HarfBuzz interface for accessing OpenType features (body). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_ADVANCES_H
|
||||
#include "afglobal.h"
|
||||
#include "aftypes.h"
|
||||
#include "afshaper.h"
|
||||
|
|
@ -103,10 +104,10 @@
|
|||
{
|
||||
hb_face_t* face;
|
||||
|
||||
hb_set_t* gsub_lookups; /* GSUB lookups for a given script */
|
||||
hb_set_t* gsub_glyphs; /* glyphs covered by GSUB lookups */
|
||||
hb_set_t* gpos_lookups; /* GPOS lookups for a given script */
|
||||
hb_set_t* gpos_glyphs; /* glyphs covered by GPOS lookups */
|
||||
hb_set_t* gsub_lookups = NULL; /* GSUB lookups for a given script */
|
||||
hb_set_t* gsub_glyphs = NULL; /* glyphs covered by GSUB lookups */
|
||||
hb_set_t* gpos_lookups = NULL; /* GPOS lookups for a given script */
|
||||
hb_set_t* gpos_glyphs = NULL; /* glyphs covered by GPOS lookups */
|
||||
|
||||
hb_script_t script;
|
||||
const hb_tag_t* coverage_tags;
|
||||
|
|
@ -126,11 +127,6 @@
|
|||
|
||||
face = hb_font_get_face( globals->hb_font );
|
||||
|
||||
gsub_lookups = hb_set_create();
|
||||
gsub_glyphs = hb_set_create();
|
||||
gpos_lookups = hb_set_create();
|
||||
gpos_glyphs = hb_set_create();
|
||||
|
||||
coverage_tags = coverages[style_class->coverage];
|
||||
script = scripts[style_class->script];
|
||||
|
||||
|
|
@ -167,6 +163,7 @@
|
|||
script_tags[1] = HB_TAG_NONE;
|
||||
}
|
||||
|
||||
gsub_lookups = hb_set_create();
|
||||
hb_ot_layout_collect_lookups( face,
|
||||
HB_OT_TAG_GSUB,
|
||||
script_tags,
|
||||
|
|
@ -177,13 +174,6 @@
|
|||
if ( hb_set_is_empty( gsub_lookups ) )
|
||||
goto Exit; /* nothing to do */
|
||||
|
||||
hb_ot_layout_collect_lookups( face,
|
||||
HB_OT_TAG_GPOS,
|
||||
script_tags,
|
||||
NULL,
|
||||
coverage_tags,
|
||||
gpos_lookups );
|
||||
|
||||
FT_TRACE4(( "GSUB lookups (style `%s'):\n"
|
||||
" ",
|
||||
af_style_names[style_class->style] ));
|
||||
|
|
@ -192,6 +182,7 @@
|
|||
count = 0;
|
||||
#endif
|
||||
|
||||
gsub_glyphs = hb_set_create();
|
||||
for ( idx = HB_SET_VALUE_INVALID; hb_set_next( gsub_lookups, &idx ); )
|
||||
{
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
|
@ -219,10 +210,19 @@
|
|||
" ",
|
||||
af_style_names[style_class->style] ));
|
||||
|
||||
gpos_lookups = hb_set_create();
|
||||
hb_ot_layout_collect_lookups( face,
|
||||
HB_OT_TAG_GPOS,
|
||||
script_tags,
|
||||
NULL,
|
||||
coverage_tags,
|
||||
gpos_lookups );
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
count = 0;
|
||||
#endif
|
||||
|
||||
gpos_glyphs = hb_set_create();
|
||||
for ( idx = HB_SET_VALUE_INVALID; hb_set_next( gpos_lookups, &idx ); )
|
||||
{
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* HarfBuzz interface for accessing OpenType features (specification). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter styles (specification only). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -83,6 +83,13 @@
|
|||
DEFAULT )
|
||||
|
||||
|
||||
STYLE( adlm_dflt, ADLM_DFLT,
|
||||
"Adlam default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_ADLM,
|
||||
AF_BLUE_STRINGSET_ADLM,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( arab_dflt, ARAB_DFLT,
|
||||
"Arabic default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -97,6 +104,20 @@
|
|||
AF_BLUE_STRINGSET_ARMN,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( avst_dflt, AVST_DFLT,
|
||||
"Avestan default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_AVST,
|
||||
AF_BLUE_STRINGSET_AVST,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( bamu_dflt, BAMU_DFLT,
|
||||
"Bamum default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_BAMU,
|
||||
AF_BLUE_STRINGSET_BAMU,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( beng_dflt, BENG_DFLT,
|
||||
"Bengali default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -104,6 +125,34 @@
|
|||
AF_BLUE_STRINGSET_BENG,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( buhd_dflt, BUHD_DFLT,
|
||||
"Buhid default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_BUHD,
|
||||
AF_BLUE_STRINGSET_BUHD,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( cakm_dflt, CAKM_DFLT,
|
||||
"Chakma default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_CAKM,
|
||||
AF_BLUE_STRINGSET_CAKM,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( cans_dflt, CANS_DFLT,
|
||||
"Canadian Syllabics default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_CANS,
|
||||
AF_BLUE_STRINGSET_CANS,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( cari_dflt, CARI_DFLT,
|
||||
"Carian default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_CARI,
|
||||
AF_BLUE_STRINGSET_CARI,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( cher_dflt, CHER_DFLT,
|
||||
"Cherokee default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -111,6 +160,20 @@
|
|||
AF_BLUE_STRINGSET_CHER,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( copt_dflt, COPT_DFLT,
|
||||
"Coptic default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_COPT,
|
||||
AF_BLUE_STRINGSET_COPT,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( cprt_dflt, CPRT_DFLT,
|
||||
"Cypriot default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_CPRT,
|
||||
AF_BLUE_STRINGSET_CPRT,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
META_STYLE_LATIN( cyrl, CYRL, "Cyrillic" )
|
||||
|
||||
STYLE( deva_dflt, DEVA_DFLT,
|
||||
|
|
@ -120,6 +183,13 @@
|
|||
AF_BLUE_STRINGSET_DEVA,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( dsrt_dflt, DSRT_DFLT,
|
||||
"Deseret default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_DSRT,
|
||||
AF_BLUE_STRINGSET_DSRT,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( ethi_dflt, ETHI_DFLT,
|
||||
"Ethiopic default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -141,6 +211,20 @@
|
|||
AF_BLUE_STRINGSET_GEOK,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( glag_dflt, GLAG_DFLT,
|
||||
"Glagolitic default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_GLAG,
|
||||
AF_BLUE_STRINGSET_GLAG,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( goth_dflt, GOTH_DFLT,
|
||||
"Gothic default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_GOTH,
|
||||
AF_BLUE_STRINGSET_GOTH,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
META_STYLE_LATIN( grek, GREK, "Greek" )
|
||||
|
||||
STYLE( gujr_dflt, GUJR_DFLT,
|
||||
|
|
@ -164,11 +248,11 @@
|
|||
AF_BLUE_STRINGSET_HEBR,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( knda_dflt, KNDA_DFLT,
|
||||
"Kannada default style",
|
||||
STYLE( kali_dflt, KALI_DFLT,
|
||||
"Kayah Li default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_KNDA,
|
||||
AF_BLUE_STRINGSET_KNDA,
|
||||
AF_SCRIPT_KALI,
|
||||
AF_BLUE_STRINGSET_KALI,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( khmr_dflt, KHMR_DFLT,
|
||||
|
|
@ -185,6 +269,13 @@
|
|||
AF_BLUE_STRINGSET_KHMS,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( knda_dflt, KNDA_DFLT,
|
||||
"Kannada default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_KNDA,
|
||||
AF_BLUE_STRINGSET_KNDA,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( lao_dflt, LAO_DFLT,
|
||||
"Lao default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -217,6 +308,13 @@
|
|||
AF_COVERAGE_DEFAULT )
|
||||
#endif
|
||||
|
||||
STYLE( lisu_dflt, LISU_DFLT,
|
||||
"Lisu default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_LISU,
|
||||
AF_BLUE_STRINGSET_LISU,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( mlym_dflt, MLYM_DFLT,
|
||||
"Malayalam default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -231,6 +329,13 @@
|
|||
AF_BLUE_STRINGSET_MYMR,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( nkoo_dflt, NKOO_DFLT,
|
||||
"N'Ko default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_NKOO,
|
||||
AF_BLUE_STRINGSET_NKOO,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( none_dflt, NONE_DFLT,
|
||||
"no style",
|
||||
AF_WRITING_SYSTEM_DUMMY,
|
||||
|
|
@ -238,6 +343,48 @@
|
|||
AF_BLUE_STRINGSET_NONE,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( olck_dflt, OLCK_DFLT,
|
||||
"Ol Chiki default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_OLCK,
|
||||
AF_BLUE_STRINGSET_OLCK,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( orkh_dflt, ORKH_DFLT,
|
||||
"Old Turkic default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_ORKH,
|
||||
AF_BLUE_STRINGSET_ORKH,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( osge_dflt, OSGE_DFLT,
|
||||
"Osage default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_OSGE,
|
||||
AF_BLUE_STRINGSET_OSGE,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( osma_dflt, OSMA_DFLT,
|
||||
"Osmanya default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_OSMA,
|
||||
AF_BLUE_STRINGSET_OSMA,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( saur_dflt, SAUR_DFLT,
|
||||
"Saurashtra default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_SAUR,
|
||||
AF_BLUE_STRINGSET_SAUR,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( shaw_dflt, SHAW_DFLT,
|
||||
"Shavian default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_SHAW,
|
||||
AF_BLUE_STRINGSET_SHAW,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( sinh_dflt, SINH_DFLT,
|
||||
"Sinhala default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -245,6 +392,13 @@
|
|||
AF_BLUE_STRINGSET_SINH,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( sund_dflt, SUND_DFLT,
|
||||
"Sundanese default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_SUND,
|
||||
AF_BLUE_STRINGSET_SUND,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( taml_dflt, TAML_DFLT,
|
||||
"Tamil default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -252,6 +406,13 @@
|
|||
AF_BLUE_STRINGSET_TAML,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( tavt_dflt, TAVT_DFLT,
|
||||
"Tai Viet default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_TAVT,
|
||||
AF_BLUE_STRINGSET_TAVT,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( telu_dflt, TELU_DFLT,
|
||||
"Telugu default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -259,6 +420,13 @@
|
|||
AF_BLUE_STRINGSET_TELU,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( tfng_dflt, TFNG_DFLT,
|
||||
"Tifinagh default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_TFNG,
|
||||
AF_BLUE_STRINGSET_TFNG,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( thai_dflt, THAI_DFLT,
|
||||
"Thai default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
@ -266,6 +434,13 @@
|
|||
AF_BLUE_STRINGSET_THAI,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( vaii_dflt, VAII_DFLT,
|
||||
"Vai default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_VAII,
|
||||
AF_BLUE_STRINGSET_VAII,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_INDIC
|
||||
|
||||
/* no blue stringset support for the Indic writing system yet */
|
||||
|
|
@ -280,7 +455,6 @@
|
|||
|
||||
STYLE_DEFAULT_INDIC( limb, LIMB, "Limbu" )
|
||||
STYLE_DEFAULT_INDIC( orya, ORYA, "Oriya" )
|
||||
STYLE_DEFAULT_INDIC( sund, SUND, "Sundanese" )
|
||||
STYLE_DEFAULT_INDIC( sylo, SYLO, "Syloti Nagri" )
|
||||
STYLE_DEFAULT_INDIC( tibt, TIBT, "Tibetan" )
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter types (specification only). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -76,9 +76,9 @@ extern void* _af_debug_hints;
|
|||
|
||||
typedef struct AF_WidthRec_
|
||||
{
|
||||
FT_Pos org; /* original position/width in font units */
|
||||
FT_Pos cur; /* current/scaled position/width in device sub-pixels */
|
||||
FT_Pos fit; /* current/fitted position/width in device sub-pixels */
|
||||
FT_Pos org; /* original position/width in font units */
|
||||
FT_Pos cur; /* current/scaled position/width in device subpixels */
|
||||
FT_Pos fit; /* current/fitted position/width in device subpixels */
|
||||
|
||||
} AF_WidthRec, *AF_Width;
|
||||
|
||||
|
|
@ -575,6 +575,7 @@ extern void* _af_debug_hints;
|
|||
m_init, \
|
||||
m_scale, \
|
||||
m_done, \
|
||||
m_stdw, \
|
||||
h_init, \
|
||||
h_apply ) \
|
||||
FT_LOCAL_DEF( void ) \
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter warping algorithm (body). */
|
||||
/* */
|
||||
/* Copyright 2006-2016 by */
|
||||
/* Copyright 2006-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -98,7 +98,6 @@
|
|||
if ( xx1min + w < warper->x2min )
|
||||
xx1min = warper->x2min - w;
|
||||
|
||||
xx1max = warper->x1max;
|
||||
if ( xx1max + w > warper->x2max )
|
||||
xx1max = warper->x2max - w;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter warping algorithm (specification). */
|
||||
/* */
|
||||
/* Copyright 2006-2016 by */
|
||||
/* Copyright 2006-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter writing systems (specification only). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* Copyright 2013-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Auto-fitter module (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -18,29 +18,22 @@
|
|||
|
||||
#define FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
#include <ft2build.h>
|
||||
#include "afpic.c"
|
||||
|
||||
#include "afangles.c"
|
||||
#include "afblue.c"
|
||||
#include "afcjk.c"
|
||||
#include "afdummy.c"
|
||||
#include "afglobal.c"
|
||||
#include "afhints.c"
|
||||
|
||||
#include "afranges.c"
|
||||
|
||||
#include "afdummy.c"
|
||||
#include "aflatin.c"
|
||||
#ifdef FT_OPTION_AUTOFIT2
|
||||
#include "aflatin2.c"
|
||||
#endif
|
||||
#include "afcjk.c"
|
||||
#include "afindic.c"
|
||||
|
||||
#include "afshaper.c"
|
||||
|
||||
#include "aflatin.c"
|
||||
#include "aflatin2.c"
|
||||
#include "afloader.c"
|
||||
#include "afmodule.c"
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
#include "afpic.c"
|
||||
#include "afranges.c"
|
||||
#include "afshaper.c"
|
||||
#include "afwarp.c"
|
||||
#endif
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
|
||||
|
||||
# Copyright 2003-2016 by
|
||||
# Copyright 2003-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
|
||||
|
||||
# Copyright 2003-2016 by
|
||||
# Copyright 2003-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# FreeType 2 src/base Jamfile
|
||||
#
|
||||
# Copyright 2001-2016 by
|
||||
# Copyright 2001-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
@ -21,11 +21,14 @@ SubDir FT2_TOP $(FT2_SRC_DIR) base ;
|
|||
ftadvanc
|
||||
ftcalc
|
||||
ftdbgmem
|
||||
ftfntfmt
|
||||
ftgloadr
|
||||
fthash
|
||||
ftlcdfil
|
||||
ftobjs
|
||||
ftoutln
|
||||
ftpic
|
||||
ftpsprop
|
||||
ftrfork
|
||||
ftsnames
|
||||
ftstream
|
||||
|
|
@ -50,13 +53,11 @@ SubDir FT2_TOP $(FT2_SRC_DIR) base ;
|
|||
ftbitmap
|
||||
ftcid
|
||||
ftdebug
|
||||
ftfntfmt
|
||||
ftfstype
|
||||
ftgasp
|
||||
ftglyph
|
||||
ftgxval
|
||||
ftinit
|
||||
ftlcdfil
|
||||
ftmm
|
||||
ftotval
|
||||
ftpatent
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType position independent code services for base. */
|
||||
/* */
|
||||
/* Copyright 2009-2016 by */
|
||||
/* Copyright 2009-2018 by */
|
||||
/* Oran Agra and Mickey Gabel. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType position independent code services for base. */
|
||||
/* */
|
||||
/* Copyright 2009-2016 by */
|
||||
/* Copyright 2009-2018 by */
|
||||
/* Oran Agra and Mickey Gabel. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Quick computation of advance widths (body). */
|
||||
/* */
|
||||
/* Copyright 2008-2016 by */
|
||||
/* Copyright 2008-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -116,9 +116,12 @@
|
|||
FT_Int32 flags,
|
||||
FT_Fixed *padvances )
|
||||
{
|
||||
FT_Error error = FT_Err_Ok;
|
||||
|
||||
FT_Face_GetAdvancesFunc func;
|
||||
FT_UInt num, end, nn;
|
||||
FT_Error error = FT_Err_Ok;
|
||||
|
||||
FT_UInt num, end, nn;
|
||||
FT_Int factor;
|
||||
|
||||
|
||||
if ( !face )
|
||||
|
|
@ -152,16 +155,17 @@
|
|||
return FT_THROW( Unimplemented_Feature );
|
||||
|
||||
flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY;
|
||||
factor = ( flags & FT_LOAD_NO_SCALE ) ? 1 : 1024;
|
||||
for ( nn = 0; nn < count; nn++ )
|
||||
{
|
||||
error = FT_Load_Glyph( face, start + nn, flags );
|
||||
if ( error )
|
||||
break;
|
||||
|
||||
/* scale from 26.6 to 16.16 */
|
||||
/* scale from 26.6 to 16.16, unless NO_SCALE was requested */
|
||||
padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
|
||||
? face->glyph->advance.y * 1024
|
||||
: face->glyph->advance.x * 1024;
|
||||
? face->glyph->advance.y * factor
|
||||
: face->glyph->advance.x * factor;
|
||||
}
|
||||
|
||||
return error;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType compatibility functions (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
/* backwards compatibility API */
|
||||
/* backward compatibility API */
|
||||
|
||||
FT_BASE_DEF( void )
|
||||
FT_New_Memory_Stream( FT_Library library,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Single object library component (body only). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -17,26 +17,26 @@
|
|||
|
||||
|
||||
#include <ft2build.h>
|
||||
|
||||
#define FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
|
||||
#include "ftpic.c"
|
||||
#include "basepic.c"
|
||||
#include "ftadvanc.c"
|
||||
#include "ftcalc.c"
|
||||
#include "ftdbgmem.c"
|
||||
#include "ftfntfmt.c"
|
||||
#include "ftgloadr.c"
|
||||
#include "fthash.c"
|
||||
#include "ftlcdfil.c"
|
||||
#include "ftmac.c"
|
||||
#include "ftobjs.c"
|
||||
#include "ftoutln.c"
|
||||
#include "ftpic.c"
|
||||
#include "ftpsprop.c"
|
||||
#include "ftrfork.c"
|
||||
#include "ftsnames.c"
|
||||
#include "ftstream.c"
|
||||
#include "fttrigon.c"
|
||||
#include "ftutil.c"
|
||||
|
||||
#ifdef FT_MACINTOSH
|
||||
#include "ftmac.c"
|
||||
#endif
|
||||
|
||||
/* END */
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
/* */
|
||||
/* ftbase.h */
|
||||
/* */
|
||||
/* The FreeType private functions used in base module (specification). */
|
||||
/* Private functions used in the `base' module (specification). */
|
||||
/* */
|
||||
/* Copyright 2008-2016 by */
|
||||
/* Copyright 2008-2018 by */
|
||||
/* David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -27,6 +27,8 @@
|
|||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_MAC_FONTS
|
||||
|
||||
/* MacOS resource fork cannot exceed 16MB at least for Carbon code; */
|
||||
/* see https://support.microsoft.com/en-us/kb/130437 */
|
||||
#define FT_MAC_RFORK_MAX_LEN 0x00FFFFFFUL
|
||||
|
|
@ -65,6 +67,8 @@ FT_BEGIN_HEADER
|
|||
ft_raccess_rule_by_darwin_vfs( FT_Library library, FT_UInt rule_index );
|
||||
#endif
|
||||
|
||||
#endif /* FT_CONFIG_OPTION_MAC_FONTS */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType bbox computation (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType API for accessing BDF-specific strings (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType utility functions for bitmaps (body). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* Copyright 2004-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -153,38 +153,36 @@
|
|||
FT_UInt ypixels )
|
||||
{
|
||||
FT_Error error;
|
||||
int pitch;
|
||||
int new_pitch;
|
||||
unsigned int pitch;
|
||||
unsigned int new_pitch;
|
||||
FT_UInt bpp;
|
||||
FT_UInt i, width, height;
|
||||
FT_UInt width, height;
|
||||
unsigned char* buffer = NULL;
|
||||
|
||||
|
||||
width = bitmap->width;
|
||||
height = bitmap->rows;
|
||||
pitch = bitmap->pitch;
|
||||
if ( pitch < 0 )
|
||||
pitch = -pitch;
|
||||
pitch = (unsigned int)FT_ABS( bitmap->pitch );
|
||||
|
||||
switch ( bitmap->pixel_mode )
|
||||
{
|
||||
case FT_PIXEL_MODE_MONO:
|
||||
bpp = 1;
|
||||
new_pitch = (int)( ( width + xpixels + 7 ) >> 3 );
|
||||
new_pitch = ( width + xpixels + 7 ) >> 3;
|
||||
break;
|
||||
case FT_PIXEL_MODE_GRAY2:
|
||||
bpp = 2;
|
||||
new_pitch = (int)( ( width + xpixels + 3 ) >> 2 );
|
||||
new_pitch = ( width + xpixels + 3 ) >> 2;
|
||||
break;
|
||||
case FT_PIXEL_MODE_GRAY4:
|
||||
bpp = 4;
|
||||
new_pitch = (int)( ( width + xpixels + 1 ) >> 1 );
|
||||
new_pitch = ( width + xpixels + 1 ) >> 1;
|
||||
break;
|
||||
case FT_PIXEL_MODE_GRAY:
|
||||
case FT_PIXEL_MODE_LCD:
|
||||
case FT_PIXEL_MODE_LCD_V:
|
||||
bpp = 8;
|
||||
new_pitch = (int)( width + xpixels );
|
||||
new_pitch = width + xpixels;
|
||||
break;
|
||||
default:
|
||||
return FT_THROW( Invalid_Glyph_Format );
|
||||
|
|
@ -194,7 +192,7 @@
|
|||
if ( ypixels == 0 && new_pitch <= pitch )
|
||||
{
|
||||
/* zero the padding */
|
||||
FT_UInt bit_width = (FT_UInt)pitch * 8;
|
||||
FT_UInt bit_width = pitch * 8;
|
||||
FT_UInt bit_last = ( width + xpixels ) * bpp;
|
||||
|
||||
|
||||
|
|
@ -226,7 +224,7 @@
|
|||
}
|
||||
|
||||
/* otherwise allocate new buffer */
|
||||
if ( FT_QALLOC_MULT( buffer, new_pitch, bitmap->rows + ypixels ) )
|
||||
if ( FT_QALLOC_MULT( buffer, bitmap->rows + ypixels, new_pitch ) )
|
||||
return error;
|
||||
|
||||
/* new rows get added at the top of the bitmap, */
|
||||
|
|
@ -235,31 +233,60 @@
|
|||
{
|
||||
FT_UInt len = ( width * bpp + 7 ) >> 3;
|
||||
|
||||
unsigned char* in = bitmap->buffer;
|
||||
unsigned char* out = buffer;
|
||||
|
||||
for ( i = 0; i < bitmap->rows; i++ )
|
||||
FT_MEM_COPY( buffer + (FT_UInt)new_pitch * ( ypixels + i ),
|
||||
bitmap->buffer + (FT_UInt)pitch * i,
|
||||
len );
|
||||
unsigned char* limit = bitmap->buffer + pitch * bitmap->rows;
|
||||
unsigned int delta = new_pitch - len;
|
||||
|
||||
|
||||
FT_MEM_ZERO( out, new_pitch * ypixels );
|
||||
out += new_pitch * ypixels;
|
||||
|
||||
while ( in < limit )
|
||||
{
|
||||
FT_MEM_COPY( out, in, len );
|
||||
in += pitch;
|
||||
out += len;
|
||||
|
||||
/* we use FT_QALLOC_MULT, which doesn't zero out the buffer; */
|
||||
/* consequently, we have to manually zero out the remaining bytes */
|
||||
FT_MEM_ZERO( out, delta );
|
||||
out += delta;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FT_UInt len = ( width * bpp + 7 ) >> 3;
|
||||
|
||||
unsigned char* in = bitmap->buffer;
|
||||
unsigned char* out = buffer;
|
||||
|
||||
for ( i = 0; i < bitmap->rows; i++ )
|
||||
FT_MEM_COPY( buffer + (FT_UInt)new_pitch * i,
|
||||
bitmap->buffer + (FT_UInt)pitch * i,
|
||||
len );
|
||||
unsigned char* limit = bitmap->buffer + pitch * bitmap->rows;
|
||||
unsigned int delta = new_pitch - len;
|
||||
|
||||
|
||||
while ( in < limit )
|
||||
{
|
||||
FT_MEM_COPY( out, in, len );
|
||||
in += pitch;
|
||||
out += len;
|
||||
|
||||
FT_MEM_ZERO( out, delta );
|
||||
out += delta;
|
||||
}
|
||||
|
||||
FT_MEM_ZERO( out, new_pitch * ypixels );
|
||||
}
|
||||
|
||||
FT_FREE( bitmap->buffer );
|
||||
bitmap->buffer = buffer;
|
||||
|
||||
if ( bitmap->pitch < 0 )
|
||||
new_pitch = -new_pitch;
|
||||
|
||||
/* set pitch only, width and height are left untouched */
|
||||
bitmap->pitch = new_pitch;
|
||||
if ( bitmap->pitch < 0 )
|
||||
bitmap->pitch = -(int)new_pitch;
|
||||
else
|
||||
bitmap->pitch = (int)new_pitch;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
|
@ -444,7 +471,7 @@
|
|||
* A gamma of 2.2 is fair to assume. And then, we need to
|
||||
* undo the premultiplication too.
|
||||
*
|
||||
* http://accessibility.kde.org/hsl-adjusted.php
|
||||
* https://accessibility.kde.org/hsl-adjusted.php
|
||||
*
|
||||
* We do the computation with integers only, applying a gamma of 2.0.
|
||||
* We guarantee 32-bit arithmetic to avoid overflow but the resulting
|
||||
|
|
@ -534,8 +561,7 @@
|
|||
(FT_ULong)target->rows > FT_ULONG_MAX / (FT_ULong)target_pitch )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
if ( target->rows * (FT_ULong)target_pitch > old_size &&
|
||||
FT_QREALLOC( target->buffer,
|
||||
if ( FT_QREALLOC( target->buffer,
|
||||
old_size, target->rows * (FT_UInt)target_pitch ) )
|
||||
return error;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Arithmetic computations (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -68,14 +68,15 @@
|
|||
#define FT_COMPONENT trace_calc
|
||||
|
||||
|
||||
/* transfer sign leaving a positive number */
|
||||
#define FT_MOVE_SIGN( x, s ) \
|
||||
FT_BEGIN_STMNT \
|
||||
if ( x < 0 ) \
|
||||
{ \
|
||||
x = -x; \
|
||||
s = -s; \
|
||||
} \
|
||||
/* transfer sign, leaving a positive number; */
|
||||
/* we need an unsigned value to safely negate INT_MIN (or LONG_MIN) */
|
||||
#define FT_MOVE_SIGN( x, x_unsigned, s ) \
|
||||
FT_BEGIN_STMNT \
|
||||
if ( x < 0 ) \
|
||||
{ \
|
||||
x_unsigned = 0U - (x_unsigned); \
|
||||
s = -s; \
|
||||
} \
|
||||
FT_END_STMNT
|
||||
|
||||
/* The following three functions are available regardless of whether */
|
||||
|
|
@ -86,7 +87,7 @@
|
|||
FT_EXPORT_DEF( FT_Fixed )
|
||||
FT_RoundFix( FT_Fixed a )
|
||||
{
|
||||
return ( a + 0x8000L - ( a < 0 ) ) & ~0xFFFFL;
|
||||
return ( ADD_LONG( a, 0x8000L - ( a < 0 ) ) ) & ~0xFFFFL;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -95,7 +96,7 @@
|
|||
FT_EXPORT_DEF( FT_Fixed )
|
||||
FT_CeilFix( FT_Fixed a )
|
||||
{
|
||||
return ( a + 0xFFFFL ) & ~0xFFFFL;
|
||||
return ( ADD_LONG( a, 0xFFFFL ) ) & ~0xFFFFL;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -179,20 +180,20 @@
|
|||
FT_Long d_;
|
||||
|
||||
|
||||
FT_MOVE_SIGN( a_, s );
|
||||
FT_MOVE_SIGN( b_, s );
|
||||
FT_MOVE_SIGN( c_, s );
|
||||
|
||||
a = (FT_UInt64)a_;
|
||||
b = (FT_UInt64)b_;
|
||||
c = (FT_UInt64)c_;
|
||||
|
||||
FT_MOVE_SIGN( a_, a, s );
|
||||
FT_MOVE_SIGN( b_, b, s );
|
||||
FT_MOVE_SIGN( c_, c, s );
|
||||
|
||||
d = c > 0 ? ( a * b + ( c >> 1 ) ) / c
|
||||
: 0x7FFFFFFFUL;
|
||||
|
||||
d_ = (FT_Long)d;
|
||||
|
||||
return s < 0 ? -d_ : d_;
|
||||
return s < 0 ? NEG_LONG( d_ ) : d_;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -208,20 +209,20 @@
|
|||
FT_Long d_;
|
||||
|
||||
|
||||
FT_MOVE_SIGN( a_, s );
|
||||
FT_MOVE_SIGN( b_, s );
|
||||
FT_MOVE_SIGN( c_, s );
|
||||
|
||||
a = (FT_UInt64)a_;
|
||||
b = (FT_UInt64)b_;
|
||||
c = (FT_UInt64)c_;
|
||||
|
||||
FT_MOVE_SIGN( a_, a, s );
|
||||
FT_MOVE_SIGN( b_, b, s );
|
||||
FT_MOVE_SIGN( c_, c, s );
|
||||
|
||||
d = c > 0 ? a * b / c
|
||||
: 0x7FFFFFFFUL;
|
||||
|
||||
d_ = (FT_Long)d;
|
||||
|
||||
return s < 0 ? -d_ : d_;
|
||||
return s < 0 ? NEG_LONG( d_ ) : d_;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -257,18 +258,18 @@
|
|||
FT_Long q_;
|
||||
|
||||
|
||||
FT_MOVE_SIGN( a_, s );
|
||||
FT_MOVE_SIGN( b_, s );
|
||||
|
||||
a = (FT_UInt64)a_;
|
||||
b = (FT_UInt64)b_;
|
||||
|
||||
FT_MOVE_SIGN( a_, a, s );
|
||||
FT_MOVE_SIGN( b_, b, s );
|
||||
|
||||
q = b > 0 ? ( ( a << 16 ) + ( b >> 1 ) ) / b
|
||||
: 0x7FFFFFFFUL;
|
||||
|
||||
q_ = (FT_Long)q;
|
||||
|
||||
return s < 0 ? -q_ : q_;
|
||||
return s < 0 ? NEG_LONG( q_ ) : q_;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -422,14 +423,14 @@
|
|||
|
||||
/* XXX: this function does not allow 64-bit arguments */
|
||||
|
||||
FT_MOVE_SIGN( a_, s );
|
||||
FT_MOVE_SIGN( b_, s );
|
||||
FT_MOVE_SIGN( c_, s );
|
||||
|
||||
a = (FT_UInt32)a_;
|
||||
b = (FT_UInt32)b_;
|
||||
c = (FT_UInt32)c_;
|
||||
|
||||
FT_MOVE_SIGN( a_, a, s );
|
||||
FT_MOVE_SIGN( b_, b, s );
|
||||
FT_MOVE_SIGN( c_, c, s );
|
||||
|
||||
if ( c == 0 )
|
||||
a = 0x7FFFFFFFUL;
|
||||
|
||||
|
|
@ -455,7 +456,7 @@
|
|||
|
||||
a_ = (FT_Long)a;
|
||||
|
||||
return s < 0 ? -a_ : a_;
|
||||
return s < 0 ? NEG_LONG( a_ ) : a_;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -470,14 +471,14 @@
|
|||
|
||||
/* XXX: this function does not allow 64-bit arguments */
|
||||
|
||||
FT_MOVE_SIGN( a_, s );
|
||||
FT_MOVE_SIGN( b_, s );
|
||||
FT_MOVE_SIGN( c_, s );
|
||||
|
||||
a = (FT_UInt32)a_;
|
||||
b = (FT_UInt32)b_;
|
||||
c = (FT_UInt32)c_;
|
||||
|
||||
FT_MOVE_SIGN( a_, a, s );
|
||||
FT_MOVE_SIGN( b_, b, s );
|
||||
FT_MOVE_SIGN( c_, c, s );
|
||||
|
||||
if ( c == 0 )
|
||||
a = 0x7FFFFFFFUL;
|
||||
|
||||
|
|
@ -498,7 +499,7 @@
|
|||
|
||||
a_ = (FT_Long)a;
|
||||
|
||||
return s < 0 ? -a_ : a_;
|
||||
return s < 0 ? NEG_LONG( a_ ) : a_;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -575,12 +576,12 @@
|
|||
|
||||
/* XXX: this function does not allow 64-bit arguments */
|
||||
|
||||
FT_MOVE_SIGN( a_, s );
|
||||
FT_MOVE_SIGN( b_, s );
|
||||
|
||||
a = (FT_UInt32)a_;
|
||||
b = (FT_UInt32)b_;
|
||||
|
||||
FT_MOVE_SIGN( a_, a, s );
|
||||
FT_MOVE_SIGN( b_, b, s );
|
||||
|
||||
if ( a + ( b >> 8 ) <= 8190UL )
|
||||
a = ( a * b + 0x8000UL ) >> 16;
|
||||
else
|
||||
|
|
@ -594,7 +595,7 @@
|
|||
|
||||
a_ = (FT_Long)a;
|
||||
|
||||
return s < 0 ? -a_ : a_;
|
||||
return s < 0 ? NEG_LONG( a_ ) : a_;
|
||||
|
||||
#endif /* 0 */
|
||||
|
||||
|
|
@ -614,12 +615,12 @@
|
|||
|
||||
/* XXX: this function does not allow 64-bit arguments */
|
||||
|
||||
FT_MOVE_SIGN( a_, s );
|
||||
FT_MOVE_SIGN( b_, s );
|
||||
|
||||
a = (FT_UInt32)a_;
|
||||
b = (FT_UInt32)b_;
|
||||
|
||||
FT_MOVE_SIGN( a_, a, s );
|
||||
FT_MOVE_SIGN( b_, b, s );
|
||||
|
||||
if ( b == 0 )
|
||||
{
|
||||
/* check for division by 0 */
|
||||
|
|
@ -647,7 +648,7 @@
|
|||
|
||||
q_ = (FT_Long)q;
|
||||
|
||||
return s < 0 ? -q_ : q_;
|
||||
return s < 0 ? NEG_LONG( q_ ) : q_;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -666,13 +667,19 @@
|
|||
if ( !a || !b )
|
||||
return;
|
||||
|
||||
xx = FT_MulFix( a->xx, b->xx ) + FT_MulFix( a->xy, b->yx );
|
||||
xy = FT_MulFix( a->xx, b->xy ) + FT_MulFix( a->xy, b->yy );
|
||||
yx = FT_MulFix( a->yx, b->xx ) + FT_MulFix( a->yy, b->yx );
|
||||
yy = FT_MulFix( a->yx, b->xy ) + FT_MulFix( a->yy, b->yy );
|
||||
xx = ADD_LONG( FT_MulFix( a->xx, b->xx ),
|
||||
FT_MulFix( a->xy, b->yx ) );
|
||||
xy = ADD_LONG( FT_MulFix( a->xx, b->xy ),
|
||||
FT_MulFix( a->xy, b->yy ) );
|
||||
yx = ADD_LONG( FT_MulFix( a->yx, b->xx ),
|
||||
FT_MulFix( a->yy, b->yx ) );
|
||||
yy = ADD_LONG( FT_MulFix( a->yx, b->xy ),
|
||||
FT_MulFix( a->yy, b->yy ) );
|
||||
|
||||
b->xx = xx; b->xy = xy;
|
||||
b->yx = yx; b->yy = yy;
|
||||
b->xx = xx;
|
||||
b->xy = xy;
|
||||
b->yx = yx;
|
||||
b->yy = yy;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -722,13 +729,19 @@
|
|||
if ( !a || !b )
|
||||
return;
|
||||
|
||||
xx = FT_MulDiv( a->xx, b->xx, val ) + FT_MulDiv( a->xy, b->yx, val );
|
||||
xy = FT_MulDiv( a->xx, b->xy, val ) + FT_MulDiv( a->xy, b->yy, val );
|
||||
yx = FT_MulDiv( a->yx, b->xx, val ) + FT_MulDiv( a->yy, b->yx, val );
|
||||
yy = FT_MulDiv( a->yx, b->xy, val ) + FT_MulDiv( a->yy, b->yy, val );
|
||||
xx = ADD_LONG( FT_MulDiv( a->xx, b->xx, val ),
|
||||
FT_MulDiv( a->xy, b->yx, val ) );
|
||||
xy = ADD_LONG( FT_MulDiv( a->xx, b->xy, val ),
|
||||
FT_MulDiv( a->xy, b->yy, val ) );
|
||||
yx = ADD_LONG( FT_MulDiv( a->yx, b->xx, val ),
|
||||
FT_MulDiv( a->yy, b->yx, val ) );
|
||||
yy = ADD_LONG( FT_MulDiv( a->yx, b->xy, val ),
|
||||
FT_MulDiv( a->yy, b->yy, val ) );
|
||||
|
||||
b->xx = xx; b->xy = xy;
|
||||
b->yx = yx; b->yy = yy;
|
||||
b->xx = xx;
|
||||
b->xy = xy;
|
||||
b->yx = yx;
|
||||
b->yy = yy;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -747,11 +760,10 @@
|
|||
if ( !vector || !matrix )
|
||||
return;
|
||||
|
||||
xz = FT_MulDiv( vector->x, matrix->xx, val ) +
|
||||
FT_MulDiv( vector->y, matrix->xy, val );
|
||||
|
||||
yz = FT_MulDiv( vector->x, matrix->yx, val ) +
|
||||
FT_MulDiv( vector->y, matrix->yy, val );
|
||||
xz = ADD_LONG( FT_MulDiv( vector->x, matrix->xx, val ),
|
||||
FT_MulDiv( vector->y, matrix->xy, val ) );
|
||||
yz = ADD_LONG( FT_MulDiv( vector->x, matrix->yx, val ),
|
||||
FT_MulDiv( vector->y, matrix->yy, val ) );
|
||||
|
||||
vector->x = xz;
|
||||
vector->y = yz;
|
||||
|
|
@ -770,12 +782,12 @@
|
|||
FT_Int sx = 1, sy = 1, shift;
|
||||
|
||||
|
||||
FT_MOVE_SIGN( x_, sx );
|
||||
FT_MOVE_SIGN( y_, sy );
|
||||
|
||||
x = (FT_UInt32)x_;
|
||||
y = (FT_UInt32)y_;
|
||||
|
||||
FT_MOVE_SIGN( x_, x, sx );
|
||||
FT_MOVE_SIGN( y_, y, sy );
|
||||
|
||||
/* trivial cases */
|
||||
if ( x == 0 )
|
||||
{
|
||||
|
|
@ -913,11 +925,13 @@
|
|||
FT_Int result;
|
||||
|
||||
|
||||
if ( (FT_ULong)FT_ABS( in_x ) + (FT_ULong)FT_ABS( out_y ) <= 131071UL &&
|
||||
(FT_ULong)FT_ABS( in_y ) + (FT_ULong)FT_ABS( out_x ) <= 131071UL )
|
||||
/* we silently ignore overflow errors, since such large values */
|
||||
/* lead to even more (harmless) rendering errors later on */
|
||||
if ( ADD_LONG( FT_ABS( in_x ), FT_ABS( out_y ) ) <= 131071L &&
|
||||
ADD_LONG( FT_ABS( in_y ), FT_ABS( out_x ) ) <= 131071L )
|
||||
{
|
||||
FT_Long z1 = in_x * out_y;
|
||||
FT_Long z2 = in_y * out_x;
|
||||
FT_Long z1 = MUL_LONG( in_x, out_y );
|
||||
FT_Long z2 = MUL_LONG( in_y, out_x );
|
||||
|
||||
|
||||
if ( z1 > z2 )
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType API for accessing CID font information. */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* Copyright 2007-2018 by */
|
||||
/* Derek Clegg and Michael Toftdal. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Memory debugger (body). */
|
||||
/* */
|
||||
/* Copyright 2001-2016 by */
|
||||
/* Copyright 2001-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -826,7 +826,7 @@
|
|||
FT_Int result = 0;
|
||||
|
||||
|
||||
if ( getenv( "FT2_DEBUG_MEMORY" ) )
|
||||
if ( ft_getenv( "FT2_DEBUG_MEMORY" ) )
|
||||
{
|
||||
table = ft_mem_table_new( memory );
|
||||
if ( table )
|
||||
|
|
@ -839,7 +839,7 @@
|
|||
memory->realloc = ft_mem_debug_realloc;
|
||||
memory->free = ft_mem_debug_free;
|
||||
|
||||
p = getenv( "FT2_ALLOC_TOTAL_MAX" );
|
||||
p = ft_getenv( "FT2_ALLOC_TOTAL_MAX" );
|
||||
if ( p )
|
||||
{
|
||||
FT_Long total_max = ft_strtol( p, NULL, 10 );
|
||||
|
|
@ -852,7 +852,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
p = getenv( "FT2_ALLOC_COUNT_MAX" );
|
||||
p = ft_getenv( "FT2_ALLOC_COUNT_MAX" );
|
||||
if ( p )
|
||||
{
|
||||
FT_Long total_count = ft_strtol( p, NULL, 10 );
|
||||
|
|
@ -865,7 +865,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
p = getenv( "FT2_KEEP_ALIVE" );
|
||||
p = ft_getenv( "FT2_KEEP_ALIVE" );
|
||||
if ( p )
|
||||
{
|
||||
FT_Long keep_alive = ft_strtol( p, NULL, 10 );
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Debugging and logging component (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
FT_BASE_DEF( void )
|
||||
ft_debug_init( void )
|
||||
{
|
||||
const char* ft2_debug = getenv( "FT2_DEBUG" );
|
||||
const char* ft2_debug = ft_getenv( "FT2_DEBUG" );
|
||||
|
||||
|
||||
if ( ft2_debug )
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType utility file for font formats (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType utility file to access FSType data (body). */
|
||||
/* */
|
||||
/* Copyright 2008-2016 by */
|
||||
/* Copyright 2008-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Access of TrueType's `gasp' table (body). */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* Copyright 2007-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType glyph loader (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType convenience functions to handle glyphs (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -408,12 +408,28 @@
|
|||
goto Exit;
|
||||
|
||||
/* copy advance while converting 26.6 to 16.16 format */
|
||||
if ( slot->advance.x >= 0x8000L * 64 ||
|
||||
slot->advance.x <= -0x8000L * 64 )
|
||||
{
|
||||
FT_ERROR(( "FT_Get_Glyph: advance width too large\n" ));
|
||||
error = FT_THROW( Invalid_Argument );
|
||||
goto Exit2;
|
||||
}
|
||||
if ( slot->advance.y >= 0x8000L * 64 ||
|
||||
slot->advance.y <= -0x8000L * 64 )
|
||||
{
|
||||
FT_ERROR(( "FT_Get_Glyph: advance height too large\n" ));
|
||||
error = FT_THROW( Invalid_Argument );
|
||||
goto Exit2;
|
||||
}
|
||||
|
||||
glyph->advance.x = slot->advance.x * 1024;
|
||||
glyph->advance.y = slot->advance.y * 1024;
|
||||
|
||||
/* now import the image from the glyph slot */
|
||||
error = clazz->glyph_init( glyph, slot );
|
||||
|
||||
Exit2:
|
||||
/* if an error occurred, destroy the glyph */
|
||||
if ( error )
|
||||
FT_Done_Glyph( glyph );
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
/* */
|
||||
/* ftgxval.c */
|
||||
/* */
|
||||
/* FreeType API for validating TrueTyepGX/AAT tables (body). */
|
||||
/* FreeType API for validating TrueTypeGX/AAT tables (body). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* Copyright 2004-2018 by */
|
||||
/* Masatake YAMATO, Redhat K.K, */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType initialization layer (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -230,31 +230,10 @@
|
|||
|
||||
#define MAX_LENGTH 128
|
||||
|
||||
/*
|
||||
* Set default properties derived from the `FREETYPE_PROPERTIES'
|
||||
* environment variable.
|
||||
*
|
||||
* `FREETYPE_PROPERTIES' has the following syntax form (broken here into
|
||||
* multiple lines for better readability)
|
||||
*
|
||||
* <optional whitespace>
|
||||
* <module-name1> ':'
|
||||
* <property-name1> '=' <property-value1>
|
||||
* <whitespace>
|
||||
* <module-name2> ':'
|
||||
* <property-name2> '=' <property-value2>
|
||||
* ...
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
||||
* cff:no-stem-darkening=1 \
|
||||
* autofitter:warping=1
|
||||
*
|
||||
*/
|
||||
/* documentation is in ftmodapi.h */
|
||||
|
||||
static void
|
||||
ft_set_default_properties( FT_Library library )
|
||||
FT_EXPORT_DEF( void )
|
||||
FT_Set_Default_Properties( FT_Library library )
|
||||
{
|
||||
const char* env;
|
||||
const char* p;
|
||||
|
|
@ -326,8 +305,8 @@
|
|||
|
||||
#else
|
||||
|
||||
static void
|
||||
ft_set_default_properties( FT_Library library )
|
||||
FT_EXPORT_DEF( void )
|
||||
FT_Set_Default_Properties( FT_Library library )
|
||||
{
|
||||
FT_UNUSED( library );
|
||||
}
|
||||
|
|
@ -365,7 +344,7 @@
|
|||
else
|
||||
FT_Add_Default_Modules( *alibrary );
|
||||
|
||||
ft_set_default_properties( *alibrary );
|
||||
FT_Set_Default_Properties( *alibrary );
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType API for color filtering of subpixel bitmap glyphs (body). */
|
||||
/* */
|
||||
/* Copyright 2006-2016 by */
|
||||
/* Copyright 2006-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -29,142 +29,140 @@
|
|||
/* define USE_LEGACY to implement the legacy filter */
|
||||
#define USE_LEGACY
|
||||
|
||||
/* FIR filter used by the default and light filters */
|
||||
static void
|
||||
_ft_lcd_filter_fir( FT_Bitmap* bitmap,
|
||||
FT_Render_Mode mode,
|
||||
FT_Library library )
|
||||
{
|
||||
FT_Byte* weights = library->lcd_weights;
|
||||
FT_UInt width = (FT_UInt)bitmap->width;
|
||||
FT_UInt height = (FT_UInt)bitmap->rows;
|
||||
#define FT_SHIFTCLAMP( x ) ( x >>= 8, (FT_Byte)( x > 255 ? 255 : x ) )
|
||||
|
||||
|
||||
/* add padding according to filter weights */
|
||||
FT_BASE_DEF (void)
|
||||
ft_lcd_padding( FT_Pos* Min,
|
||||
FT_Pos* Max,
|
||||
FT_GlyphSlot slot )
|
||||
{
|
||||
FT_Byte* lcd_weights;
|
||||
FT_Bitmap_LcdFilterFunc lcd_filter_func;
|
||||
|
||||
|
||||
/* Per-face LCD filtering takes priority if set up. */
|
||||
if ( slot->face && slot->face->internal->lcd_filter_func )
|
||||
{
|
||||
lcd_weights = slot->face->internal->lcd_weights;
|
||||
lcd_filter_func = slot->face->internal->lcd_filter_func;
|
||||
}
|
||||
else
|
||||
{
|
||||
lcd_weights = slot->library->lcd_weights;
|
||||
lcd_filter_func = slot->library->lcd_filter_func;
|
||||
}
|
||||
|
||||
if ( lcd_filter_func == ft_lcd_filter_fir )
|
||||
{
|
||||
*Min -= lcd_weights[0] ? 43 :
|
||||
lcd_weights[1] ? 22 : 0;
|
||||
*Max += lcd_weights[4] ? 43 :
|
||||
lcd_weights[3] ? 22 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* FIR filter used by the default and light filters */
|
||||
FT_BASE_DEF( void )
|
||||
ft_lcd_filter_fir( FT_Bitmap* bitmap,
|
||||
FT_Render_Mode mode,
|
||||
FT_LcdFiveTapFilter weights )
|
||||
{
|
||||
FT_UInt width = (FT_UInt)bitmap->width;
|
||||
FT_UInt height = (FT_UInt)bitmap->rows;
|
||||
FT_Int pitch = bitmap->pitch;
|
||||
FT_Byte* origin = bitmap->buffer;
|
||||
|
||||
|
||||
/* take care of bitmap flow */
|
||||
if ( pitch > 0 && height > 0 )
|
||||
origin += pitch * (FT_Int)( height - 1 );
|
||||
|
||||
/* horizontal in-place FIR filter */
|
||||
if ( mode == FT_RENDER_MODE_LCD && width >= 4 )
|
||||
if ( mode == FT_RENDER_MODE_LCD && width >= 2 )
|
||||
{
|
||||
FT_Byte* line = bitmap->buffer;
|
||||
FT_Byte* line = origin;
|
||||
|
||||
|
||||
/* take care of bitmap flow */
|
||||
if ( bitmap->pitch < 0 )
|
||||
line -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
|
||||
/* `fir' must be at least 32 bit wide, since the sum of */
|
||||
/* the values in `weights' can exceed 0xFF */
|
||||
|
||||
/* `fir' and `pix' must be at least 32 bit wide, since the sum of */
|
||||
/* the values in `weights' can exceed 0xFF */
|
||||
|
||||
for ( ; height > 0; height--, line += bitmap->pitch )
|
||||
for ( ; height > 0; height--, line -= pitch )
|
||||
{
|
||||
FT_UInt fir[4]; /* below, `pix' is used as the 5th element */
|
||||
FT_UInt val1, xx;
|
||||
FT_UInt fir[5];
|
||||
FT_UInt val, xx;
|
||||
|
||||
|
||||
val1 = line[0];
|
||||
fir[0] = weights[2] * val1;
|
||||
fir[1] = weights[3] * val1;
|
||||
fir[2] = weights[4] * val1;
|
||||
fir[3] = 0;
|
||||
val = line[0];
|
||||
fir[2] = weights[2] * val;
|
||||
fir[3] = weights[3] * val;
|
||||
fir[4] = weights[4] * val;
|
||||
|
||||
val1 = line[1];
|
||||
fir[0] += weights[1] * val1;
|
||||
fir[1] += weights[2] * val1;
|
||||
fir[2] += weights[3] * val1;
|
||||
fir[3] += weights[4] * val1;
|
||||
val = line[1];
|
||||
fir[1] = fir[2] + weights[1] * val;
|
||||
fir[2] = fir[3] + weights[2] * val;
|
||||
fir[3] = fir[4] + weights[3] * val;
|
||||
fir[4] = weights[4] * val;
|
||||
|
||||
for ( xx = 2; xx < width; xx++ )
|
||||
{
|
||||
FT_UInt val, pix;
|
||||
|
||||
|
||||
val = line[xx];
|
||||
pix = fir[0] + weights[0] * val;
|
||||
fir[0] = fir[1] + weights[1] * val;
|
||||
fir[1] = fir[2] + weights[2] * val;
|
||||
fir[2] = fir[3] + weights[3] * val;
|
||||
fir[3] = weights[4] * val;
|
||||
fir[0] = fir[1] + weights[0] * val;
|
||||
fir[1] = fir[2] + weights[1] * val;
|
||||
fir[2] = fir[3] + weights[2] * val;
|
||||
fir[3] = fir[4] + weights[3] * val;
|
||||
fir[4] = weights[4] * val;
|
||||
|
||||
pix >>= 8;
|
||||
pix |= (FT_UInt)-(FT_Int)( pix >> 8 );
|
||||
line[xx - 2] = (FT_Byte)pix;
|
||||
line[xx - 2] = FT_SHIFTCLAMP( fir[0] );
|
||||
}
|
||||
|
||||
{
|
||||
FT_UInt pix;
|
||||
|
||||
|
||||
pix = fir[0] >> 8;
|
||||
pix |= (FT_UInt)-(FT_Int)( pix >> 8 );
|
||||
line[xx - 2] = (FT_Byte)pix;
|
||||
|
||||
pix = fir[1] >> 8;
|
||||
pix |= (FT_UInt)-(FT_Int)( pix >> 8 );
|
||||
line[xx - 1] = (FT_Byte)pix;
|
||||
}
|
||||
line[xx - 2] = FT_SHIFTCLAMP( fir[1] );
|
||||
line[xx - 1] = FT_SHIFTCLAMP( fir[2] );
|
||||
}
|
||||
}
|
||||
|
||||
/* vertical in-place FIR filter */
|
||||
else if ( mode == FT_RENDER_MODE_LCD_V && height >= 4 )
|
||||
else if ( mode == FT_RENDER_MODE_LCD_V && height >= 2 )
|
||||
{
|
||||
FT_Byte* column = bitmap->buffer;
|
||||
FT_Int pitch = bitmap->pitch;
|
||||
FT_Byte* column = origin;
|
||||
|
||||
|
||||
/* take care of bitmap flow */
|
||||
if ( bitmap->pitch < 0 )
|
||||
column -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
|
||||
|
||||
for ( ; width > 0; width--, column++ )
|
||||
{
|
||||
FT_Byte* col = column;
|
||||
FT_UInt fir[4]; /* below, `pix' is used as the 5th element */
|
||||
FT_UInt val1, yy;
|
||||
FT_UInt fir[5];
|
||||
FT_UInt val, yy;
|
||||
|
||||
|
||||
val1 = col[0];
|
||||
fir[0] = weights[2] * val1;
|
||||
fir[1] = weights[3] * val1;
|
||||
fir[2] = weights[4] * val1;
|
||||
fir[3] = 0;
|
||||
col += pitch;
|
||||
val = col[0];
|
||||
fir[2] = weights[2] * val;
|
||||
fir[3] = weights[3] * val;
|
||||
fir[4] = weights[4] * val;
|
||||
col -= pitch;
|
||||
|
||||
val1 = col[0];
|
||||
fir[0] += weights[1] * val1;
|
||||
fir[1] += weights[2] * val1;
|
||||
fir[2] += weights[3] * val1;
|
||||
fir[3] += weights[4] * val1;
|
||||
col += pitch;
|
||||
val = col[0];
|
||||
fir[1] = fir[2] + weights[1] * val;
|
||||
fir[2] = fir[3] + weights[2] * val;
|
||||
fir[3] = fir[4] + weights[3] * val;
|
||||
fir[4] = weights[4] * val;
|
||||
col -= pitch;
|
||||
|
||||
for ( yy = 2; yy < height; yy++ )
|
||||
for ( yy = 2; yy < height; yy++, col -= pitch )
|
||||
{
|
||||
FT_UInt val, pix;
|
||||
|
||||
|
||||
val = col[0];
|
||||
pix = fir[0] + weights[0] * val;
|
||||
fir[0] = fir[1] + weights[1] * val;
|
||||
fir[1] = fir[2] + weights[2] * val;
|
||||
fir[2] = fir[3] + weights[3] * val;
|
||||
fir[3] = weights[4] * val;
|
||||
fir[0] = fir[1] + weights[0] * val;
|
||||
fir[1] = fir[2] + weights[1] * val;
|
||||
fir[2] = fir[3] + weights[2] * val;
|
||||
fir[3] = fir[4] + weights[3] * val;
|
||||
fir[4] = weights[4] * val;
|
||||
|
||||
pix >>= 8;
|
||||
pix |= (FT_UInt)-(FT_Int)( pix >> 8 );
|
||||
col[-2 * pitch] = (FT_Byte)pix;
|
||||
col += pitch;
|
||||
col[pitch * 2] = FT_SHIFTCLAMP( fir[0] );
|
||||
}
|
||||
|
||||
{
|
||||
FT_UInt pix;
|
||||
|
||||
|
||||
pix = fir[0] >> 8;
|
||||
pix |= (FT_UInt)-(FT_Int)( pix >> 8 );
|
||||
col[-2 * pitch] = (FT_Byte)pix;
|
||||
|
||||
pix = fir[1] >> 8;
|
||||
pix |= (FT_UInt)-(FT_Int)( pix >> 8 );
|
||||
col[-pitch] = (FT_Byte)pix;
|
||||
}
|
||||
col[pitch * 2] = FT_SHIFTCLAMP( fir[1] );
|
||||
col[pitch] = FT_SHIFTCLAMP( fir[2] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -176,11 +174,12 @@
|
|||
static void
|
||||
_ft_lcd_filter_legacy( FT_Bitmap* bitmap,
|
||||
FT_Render_Mode mode,
|
||||
FT_Library library )
|
||||
FT_Byte* weights )
|
||||
{
|
||||
FT_UInt width = (FT_UInt)bitmap->width;
|
||||
FT_UInt height = (FT_UInt)bitmap->rows;
|
||||
FT_Int pitch = bitmap->pitch;
|
||||
FT_UInt width = (FT_UInt)bitmap->width;
|
||||
FT_UInt height = (FT_UInt)bitmap->rows;
|
||||
FT_Int pitch = bitmap->pitch;
|
||||
FT_Byte* origin = bitmap->buffer;
|
||||
|
||||
static const unsigned int filters[3][3] =
|
||||
{
|
||||
|
|
@ -189,36 +188,34 @@
|
|||
{ 65538 * 1/13, 65538 * 1/6, 65538 * 9/13 }
|
||||
};
|
||||
|
||||
FT_UNUSED( library );
|
||||
FT_UNUSED( weights );
|
||||
|
||||
|
||||
/* take care of bitmap flow */
|
||||
if ( pitch > 0 && height > 0 )
|
||||
origin += pitch * (FT_Int)( height - 1 );
|
||||
|
||||
/* horizontal in-place intra-pixel filter */
|
||||
if ( mode == FT_RENDER_MODE_LCD && width >= 3 )
|
||||
{
|
||||
FT_Byte* line = bitmap->buffer;
|
||||
FT_Byte* line = origin;
|
||||
|
||||
|
||||
/* take care of bitmap flow */
|
||||
if ( bitmap->pitch < 0 )
|
||||
line -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
|
||||
|
||||
for ( ; height > 0; height--, line += pitch )
|
||||
for ( ; height > 0; height--, line -= pitch )
|
||||
{
|
||||
FT_UInt xx;
|
||||
|
||||
|
||||
for ( xx = 0; xx < width; xx += 3 )
|
||||
{
|
||||
FT_UInt r = 0;
|
||||
FT_UInt g = 0;
|
||||
FT_UInt b = 0;
|
||||
FT_UInt r, g, b;
|
||||
FT_UInt p;
|
||||
|
||||
|
||||
p = line[xx];
|
||||
r += filters[0][0] * p;
|
||||
g += filters[0][1] * p;
|
||||
b += filters[0][2] * p;
|
||||
r = filters[0][0] * p;
|
||||
g = filters[0][1] * p;
|
||||
b = filters[0][2] * p;
|
||||
|
||||
p = line[xx + 1];
|
||||
r += filters[1][0] * p;
|
||||
|
|
@ -238,31 +235,24 @@
|
|||
}
|
||||
else if ( mode == FT_RENDER_MODE_LCD_V && height >= 3 )
|
||||
{
|
||||
FT_Byte* column = bitmap->buffer;
|
||||
FT_Byte* column = origin;
|
||||
|
||||
|
||||
/* take care of bitmap flow */
|
||||
if ( bitmap->pitch < 0 )
|
||||
column -= bitmap->pitch * (FT_Int)( bitmap->rows - 1 );
|
||||
|
||||
for ( ; width > 0; width--, column++ )
|
||||
{
|
||||
FT_Byte* col = column;
|
||||
FT_Byte* col_end = col + (FT_Int)height * pitch;
|
||||
FT_Byte* col = column - 2 * pitch;
|
||||
|
||||
|
||||
for ( ; col < col_end; col += 3 * pitch )
|
||||
for ( ; height > 0; height -= 3, col -= 3 * pitch )
|
||||
{
|
||||
FT_UInt r = 0;
|
||||
FT_UInt g = 0;
|
||||
FT_UInt b = 0;
|
||||
FT_UInt r, g, b;
|
||||
FT_UInt p;
|
||||
|
||||
|
||||
p = col[0];
|
||||
r += filters[0][0] * p;
|
||||
g += filters[0][1] * p;
|
||||
b += filters[0][2] * p;
|
||||
r = filters[0][0] * p;
|
||||
g = filters[0][1] * p;
|
||||
b = filters[0][2] * p;
|
||||
|
||||
p = col[pitch];
|
||||
r += filters[1][0] * p;
|
||||
|
|
@ -276,7 +266,7 @@
|
|||
|
||||
col[0] = (FT_Byte)( r / 65536 );
|
||||
col[pitch] = (FT_Byte)( g / 65536 );
|
||||
col[2 * pitch] = (FT_Byte)( b / 65536 );
|
||||
col[pitch * 2] = (FT_Byte)( b / 65536 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -295,9 +285,8 @@
|
|||
if ( !weights )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
ft_memcpy( library->lcd_weights, weights, 5 );
|
||||
library->lcd_filter_func = _ft_lcd_filter_fir;
|
||||
library->lcd_extra = 2;
|
||||
ft_memcpy( library->lcd_weights, weights, FT_LCD_FILTER_FIVE_TAPS );
|
||||
library->lcd_filter_func = ft_lcd_filter_fir;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
|
@ -307,10 +296,10 @@
|
|||
FT_Library_SetLcdFilter( FT_Library library,
|
||||
FT_LcdFilter filter )
|
||||
{
|
||||
static const FT_Byte default_filter[5] =
|
||||
{ 0x08, 0x4d, 0x56, 0x4d, 0x08 };
|
||||
static const FT_Byte light_filter[5] =
|
||||
{ 0x00, 0x55, 0x56, 0x55, 0x00 };
|
||||
static const FT_LcdFiveTapFilter default_weights =
|
||||
{ 0x08, 0x4d, 0x56, 0x4d, 0x08 };
|
||||
static const FT_LcdFiveTapFilter light_weights =
|
||||
{ 0x00, 0x55, 0x56, 0x55, 0x00 };
|
||||
|
||||
|
||||
if ( !library )
|
||||
|
|
@ -320,19 +309,20 @@
|
|||
{
|
||||
case FT_LCD_FILTER_NONE:
|
||||
library->lcd_filter_func = NULL;
|
||||
library->lcd_extra = 0;
|
||||
break;
|
||||
|
||||
case FT_LCD_FILTER_DEFAULT:
|
||||
ft_memcpy( library->lcd_weights, default_filter, 5 );
|
||||
library->lcd_filter_func = _ft_lcd_filter_fir;
|
||||
library->lcd_extra = 2;
|
||||
ft_memcpy( library->lcd_weights,
|
||||
default_weights,
|
||||
FT_LCD_FILTER_FIVE_TAPS );
|
||||
library->lcd_filter_func = ft_lcd_filter_fir;
|
||||
break;
|
||||
|
||||
case FT_LCD_FILTER_LIGHT:
|
||||
ft_memcpy( library->lcd_weights, light_filter, 5 );
|
||||
library->lcd_filter_func = _ft_lcd_filter_fir;
|
||||
library->lcd_extra = 2;
|
||||
ft_memcpy( library->lcd_weights,
|
||||
light_weights,
|
||||
FT_LCD_FILTER_FIVE_TAPS );
|
||||
library->lcd_filter_func = ft_lcd_filter_fir;
|
||||
break;
|
||||
|
||||
#ifdef USE_LEGACY
|
||||
|
|
@ -340,7 +330,6 @@
|
|||
case FT_LCD_FILTER_LEGACY:
|
||||
case FT_LCD_FILTER_LEGACY1:
|
||||
library->lcd_filter_func = _ft_lcd_filter_legacy;
|
||||
library->lcd_extra = 0;
|
||||
break;
|
||||
|
||||
#endif
|
||||
|
|
@ -349,13 +338,24 @@
|
|||
return FT_THROW( Invalid_Argument );
|
||||
}
|
||||
|
||||
library->lcd_filter = filter;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
||||
|
||||
/* add padding according to accommodate outline shifts */
|
||||
FT_BASE_DEF (void)
|
||||
ft_lcd_padding( FT_Pos* Min,
|
||||
FT_Pos* Max,
|
||||
FT_GlyphSlot slot )
|
||||
{
|
||||
FT_UNUSED( slot );
|
||||
|
||||
*Min -= 21;
|
||||
*Max += 21;
|
||||
}
|
||||
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Library_SetLcdFilterWeights( FT_Library library,
|
||||
unsigned char *weights )
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
/* This file is for Mac OS X only; see builds/mac/ftoldmac.c for */
|
||||
/* classic platforms built by MPW. */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -71,6 +71,9 @@
|
|||
#include FT_INTERNAL_STREAM_H
|
||||
#include "ftbase.h"
|
||||
|
||||
|
||||
#ifdef FT_MACINTOSH
|
||||
|
||||
/* This is for Mac OS X. Without redefinition, OS_INLINE */
|
||||
/* expands to `static inline' which doesn't survive the */
|
||||
/* -ansi compilation flag of GCC. */
|
||||
|
|
@ -118,8 +121,6 @@
|
|||
#endif
|
||||
|
||||
|
||||
#ifdef FT_MACINTOSH
|
||||
|
||||
/* This function is deprecated because FSSpec is deprecated in Mac OS X */
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_GetFile_From_Mac_Name( const char* fontName,
|
||||
|
|
@ -1004,7 +1005,7 @@
|
|||
/* accepts an FSRef instead of a path. */
|
||||
/* */
|
||||
/* This function is deprecated because Carbon data types (FSRef) */
|
||||
/* are not cross-platform, and thus not suitable for the freetype API. */
|
||||
/* are not cross-platform, and thus not suitable for the FreeType API. */
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_New_Face_From_FSRef( FT_Library library,
|
||||
const FSRef* ref,
|
||||
|
|
@ -1076,7 +1077,12 @@
|
|||
#endif
|
||||
}
|
||||
|
||||
#endif /* FT_MACINTOSH */
|
||||
#else /* !FT_MACINTOSH */
|
||||
|
||||
/* ANSI C doesn't like empty source files */
|
||||
typedef int _ft_mac_dummy;
|
||||
|
||||
#endif /* !FT_MACINTOSH */
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Multiple Master font support (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -22,6 +22,7 @@
|
|||
#include FT_MULTIPLE_MASTERS_H
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_SERVICE_MULTIPLE_MASTERS_H
|
||||
#include FT_SERVICE_METRICS_VARIATIONS_H
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
|
@ -62,6 +63,34 @@
|
|||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
ft_face_get_mvar_service( FT_Face face,
|
||||
FT_Service_MetricsVariations *aservice )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
*aservice = NULL;
|
||||
|
||||
if ( !face )
|
||||
return FT_THROW( Invalid_Face_Handle );
|
||||
|
||||
error = FT_ERR( Invalid_Argument );
|
||||
|
||||
if ( FT_HAS_MULTIPLE_MASTERS( face ) )
|
||||
{
|
||||
FT_FACE_LOOKUP_SERVICE( face,
|
||||
*aservice,
|
||||
METRICS_VARIATIONS );
|
||||
|
||||
if ( *aservice )
|
||||
error = FT_Err_Ok;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in ftmm.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
|
|
@ -116,6 +145,25 @@
|
|||
}
|
||||
|
||||
|
||||
/* documentation is in ftmm.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Done_MM_Var( FT_Library library,
|
||||
FT_MM_Var* amaster )
|
||||
{
|
||||
FT_Memory memory;
|
||||
|
||||
|
||||
if ( !library )
|
||||
return FT_THROW( Invalid_Library_Handle );
|
||||
|
||||
memory = library->memory;
|
||||
FT_FREE( amaster );
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in ftmm.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
|
|
@ -129,7 +177,7 @@
|
|||
|
||||
/* check of `face' delayed to `ft_face_get_mm_service' */
|
||||
|
||||
if ( !coords )
|
||||
if ( num_coords && !coords )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
error = ft_face_get_mm_service( face, &service );
|
||||
|
|
@ -158,21 +206,34 @@
|
|||
FT_UInt num_coords,
|
||||
FT_Fixed* coords )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Service_MultiMasters service;
|
||||
FT_Error error;
|
||||
FT_Service_MultiMasters service_mm = NULL;
|
||||
FT_Service_MetricsVariations service_mvar = NULL;
|
||||
|
||||
|
||||
/* check of `face' delayed to `ft_face_get_mm_service' */
|
||||
|
||||
if ( !coords )
|
||||
if ( num_coords && !coords )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
error = ft_face_get_mm_service( face, &service );
|
||||
error = ft_face_get_mm_service( face, &service_mm );
|
||||
if ( !error )
|
||||
{
|
||||
error = FT_ERR( Invalid_Argument );
|
||||
if ( service->set_var_design )
|
||||
error = service->set_var_design( face, num_coords, coords );
|
||||
if ( service_mm->set_var_design )
|
||||
error = service_mm->set_var_design( face, num_coords, coords );
|
||||
|
||||
/* internal error code -1 means `no change'; we can exit immediately */
|
||||
if ( error == -1 )
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
if ( !error )
|
||||
{
|
||||
(void)ft_face_get_mvar_service( face, &service_mvar );
|
||||
|
||||
if ( service_mvar && service_mvar->metrics_adjust )
|
||||
service_mvar->metrics_adjust( face );
|
||||
}
|
||||
|
||||
/* enforce recomputation of auto-hinting data */
|
||||
|
|
@ -221,21 +282,34 @@
|
|||
FT_UInt num_coords,
|
||||
FT_Fixed* coords )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Service_MultiMasters service;
|
||||
FT_Error error;
|
||||
FT_Service_MultiMasters service_mm = NULL;
|
||||
FT_Service_MetricsVariations service_mvar = NULL;
|
||||
|
||||
|
||||
/* check of `face' delayed to `ft_face_get_mm_service' */
|
||||
|
||||
if ( !coords )
|
||||
if ( num_coords && !coords )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
error = ft_face_get_mm_service( face, &service );
|
||||
error = ft_face_get_mm_service( face, &service_mm );
|
||||
if ( !error )
|
||||
{
|
||||
error = FT_ERR( Invalid_Argument );
|
||||
if ( service->set_mm_blend )
|
||||
error = service->set_mm_blend( face, num_coords, coords );
|
||||
if ( service_mm->set_mm_blend )
|
||||
error = service_mm->set_mm_blend( face, num_coords, coords );
|
||||
|
||||
/* internal error code -1 means `no change'; we can exit immediately */
|
||||
if ( error == -1 )
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
if ( !error )
|
||||
{
|
||||
(void)ft_face_get_mvar_service( face, &service_mvar );
|
||||
|
||||
if ( service_mvar && service_mvar->metrics_adjust )
|
||||
service_mvar->metrics_adjust( face );
|
||||
}
|
||||
|
||||
/* enforce recomputation of auto-hinting data */
|
||||
|
|
@ -259,21 +333,34 @@
|
|||
FT_UInt num_coords,
|
||||
FT_Fixed* coords )
|
||||
{
|
||||
FT_Error error;
|
||||
FT_Service_MultiMasters service;
|
||||
FT_Error error;
|
||||
FT_Service_MultiMasters service_mm = NULL;
|
||||
FT_Service_MetricsVariations service_mvar = NULL;
|
||||
|
||||
|
||||
/* check of `face' delayed to `ft_face_get_mm_service' */
|
||||
|
||||
if ( !coords )
|
||||
if ( num_coords && !coords )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
error = ft_face_get_mm_service( face, &service );
|
||||
error = ft_face_get_mm_service( face, &service_mm );
|
||||
if ( !error )
|
||||
{
|
||||
error = FT_ERR( Invalid_Argument );
|
||||
if ( service->set_mm_blend )
|
||||
error = service->set_mm_blend( face, num_coords, coords );
|
||||
if ( service_mm->set_mm_blend )
|
||||
error = service_mm->set_mm_blend( face, num_coords, coords );
|
||||
|
||||
/* internal error code -1 means `no change'; we can exit immediately */
|
||||
if ( error == -1 )
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
if ( !error )
|
||||
{
|
||||
(void)ft_face_get_mvar_service( face, &service_mvar );
|
||||
|
||||
if ( service_mvar && service_mvar->metrics_adjust )
|
||||
service_mvar->metrics_adjust( face );
|
||||
}
|
||||
|
||||
/* enforce recomputation of auto-hinting data */
|
||||
|
|
@ -346,4 +433,76 @@
|
|||
}
|
||||
|
||||
|
||||
/* documentation is in ftmm.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Get_Var_Axis_Flags( FT_MM_Var* master,
|
||||
FT_UInt axis_index,
|
||||
FT_UInt* flags )
|
||||
{
|
||||
FT_UShort* axis_flags;
|
||||
|
||||
|
||||
if ( !master || !flags )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
if ( axis_index >= master->num_axis )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
/* the axis flags array immediately follows the data of `master' */
|
||||
axis_flags = (FT_UShort*)&( master[1] );
|
||||
*flags = axis_flags[axis_index];
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in ftmm.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Set_Named_Instance( FT_Face face,
|
||||
FT_UInt instance_index )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
FT_Service_MultiMasters service_mm = NULL;
|
||||
FT_Service_MetricsVariations service_mvar = NULL;
|
||||
|
||||
|
||||
/* check of `face' delayed to `ft_face_get_mm_service' */
|
||||
|
||||
error = ft_face_get_mm_service( face, &service_mm );
|
||||
if ( !error )
|
||||
{
|
||||
error = FT_ERR( Invalid_Argument );
|
||||
if ( service_mm->set_instance )
|
||||
error = service_mm->set_instance( face, instance_index );
|
||||
}
|
||||
|
||||
if ( !error )
|
||||
{
|
||||
(void)ft_face_get_mvar_service( face, &service_mvar );
|
||||
|
||||
if ( service_mvar && service_mvar->metrics_adjust )
|
||||
service_mvar->metrics_adjust( face );
|
||||
}
|
||||
|
||||
/* enforce recomputation of auto-hinting data */
|
||||
if ( !error && face->autohint.finalizer )
|
||||
{
|
||||
face->autohint.finalizer( face->autohint.data );
|
||||
face->autohint.data = NULL;
|
||||
}
|
||||
|
||||
if ( !error )
|
||||
{
|
||||
face->face_index = ( instance_index << 16 ) |
|
||||
( face->face_index & 0xFFFFL );
|
||||
face->face_flags &= ~FT_FACE_FLAG_VARIATION;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType private base classes (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -19,12 +19,16 @@
|
|||
#include <ft2build.h>
|
||||
#include FT_LIST_H
|
||||
#include FT_OUTLINE_H
|
||||
#include FT_FONT_FORMATS_H
|
||||
|
||||
#include FT_INTERNAL_VALIDATE_H
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_INTERNAL_DEBUG_H
|
||||
#include FT_INTERNAL_RFORK_H
|
||||
#include FT_INTERNAL_STREAM_H
|
||||
#include FT_INTERNAL_SFNT_H /* for SFNT_Load_Table_Func */
|
||||
#include FT_INTERNAL_SFNT_H /* for SFNT_Load_Table_Func */
|
||||
#include FT_INTERNAL_POSTSCRIPT_AUX_H /* for PS_Driver */
|
||||
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include FT_TRUETYPE_TAGS_H
|
||||
#include FT_TRUETYPE_IDS_H
|
||||
|
|
@ -37,6 +41,8 @@
|
|||
#include FT_SERVICE_KERNING_H
|
||||
#include FT_SERVICE_TRUETYPE_ENGINE_H
|
||||
|
||||
#include FT_DRIVER_H
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_MAC_FONTS
|
||||
#include "ftbase.h"
|
||||
#endif
|
||||
|
|
@ -324,6 +330,138 @@
|
|||
}
|
||||
|
||||
|
||||
FT_BASE_DEF( void )
|
||||
ft_glyphslot_preset_bitmap( FT_GlyphSlot slot,
|
||||
FT_Render_Mode mode,
|
||||
const FT_Vector* origin )
|
||||
{
|
||||
FT_Outline* outline = &slot->outline;
|
||||
FT_Bitmap* bitmap = &slot->bitmap;
|
||||
|
||||
FT_Pixel_Mode pixel_mode;
|
||||
|
||||
FT_BBox cbox;
|
||||
FT_Pos x_shift = 0;
|
||||
FT_Pos y_shift = 0;
|
||||
FT_Pos x_left, y_top;
|
||||
FT_Pos width, height, pitch;
|
||||
|
||||
|
||||
if ( slot->internal && ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) )
|
||||
return;
|
||||
|
||||
if ( origin )
|
||||
{
|
||||
x_shift = origin->x;
|
||||
y_shift = origin->y;
|
||||
}
|
||||
|
||||
/* compute the control box, and grid-fit it, */
|
||||
/* taking into account the origin shift */
|
||||
FT_Outline_Get_CBox( outline, &cbox );
|
||||
|
||||
cbox.xMin += x_shift;
|
||||
cbox.yMin += y_shift;
|
||||
cbox.xMax += x_shift;
|
||||
cbox.yMax += y_shift;
|
||||
|
||||
switch ( mode )
|
||||
{
|
||||
case FT_RENDER_MODE_MONO:
|
||||
pixel_mode = FT_PIXEL_MODE_MONO;
|
||||
#if 1
|
||||
/* undocumented but confirmed: bbox values get rounded */
|
||||
/* unless the rounded box can collapse for a narrow glyph */
|
||||
if ( cbox.xMax - cbox.xMin < 64 )
|
||||
{
|
||||
cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
|
||||
cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
|
||||
}
|
||||
else
|
||||
{
|
||||
cbox.xMin = FT_PIX_ROUND_LONG( cbox.xMin );
|
||||
cbox.xMax = FT_PIX_ROUND_LONG( cbox.xMax );
|
||||
}
|
||||
|
||||
if ( cbox.yMax - cbox.yMin < 64 )
|
||||
{
|
||||
cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
|
||||
cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
|
||||
}
|
||||
else
|
||||
{
|
||||
cbox.yMin = FT_PIX_ROUND_LONG( cbox.yMin );
|
||||
cbox.yMax = FT_PIX_ROUND_LONG( cbox.yMax );
|
||||
}
|
||||
#else
|
||||
cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
|
||||
cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
|
||||
cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
|
||||
cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
|
||||
#endif
|
||||
break;
|
||||
|
||||
case FT_RENDER_MODE_LCD:
|
||||
pixel_mode = FT_PIXEL_MODE_LCD;
|
||||
ft_lcd_padding( &cbox.xMin, &cbox.xMax, slot );
|
||||
goto Round;
|
||||
|
||||
case FT_RENDER_MODE_LCD_V:
|
||||
pixel_mode = FT_PIXEL_MODE_LCD_V;
|
||||
ft_lcd_padding( &cbox.yMin, &cbox.yMax, slot );
|
||||
goto Round;
|
||||
|
||||
case FT_RENDER_MODE_NORMAL:
|
||||
case FT_RENDER_MODE_LIGHT:
|
||||
default:
|
||||
pixel_mode = FT_PIXEL_MODE_GRAY;
|
||||
Round:
|
||||
cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
|
||||
cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
|
||||
cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
|
||||
cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
|
||||
}
|
||||
|
||||
x_shift = SUB_LONG( x_shift, cbox.xMin );
|
||||
y_shift = SUB_LONG( y_shift, cbox.yMin );
|
||||
|
||||
x_left = cbox.xMin >> 6;
|
||||
y_top = cbox.yMax >> 6;
|
||||
|
||||
width = ( (FT_ULong)cbox.xMax - (FT_ULong)cbox.xMin ) >> 6;
|
||||
height = ( (FT_ULong)cbox.yMax - (FT_ULong)cbox.yMin ) >> 6;
|
||||
|
||||
switch ( pixel_mode )
|
||||
{
|
||||
case FT_PIXEL_MODE_MONO:
|
||||
pitch = ( ( width + 15 ) >> 4 ) << 1;
|
||||
break;
|
||||
|
||||
case FT_PIXEL_MODE_LCD:
|
||||
width *= 3;
|
||||
pitch = FT_PAD_CEIL( width, 4 );
|
||||
break;
|
||||
|
||||
case FT_PIXEL_MODE_LCD_V:
|
||||
height *= 3;
|
||||
/* fall through */
|
||||
|
||||
case FT_PIXEL_MODE_GRAY:
|
||||
default:
|
||||
pitch = width;
|
||||
}
|
||||
|
||||
slot->bitmap_left = (FT_Int)x_left;
|
||||
slot->bitmap_top = (FT_Int)y_top;
|
||||
|
||||
bitmap->pixel_mode = (unsigned char)pixel_mode;
|
||||
bitmap->num_grays = 256;
|
||||
bitmap->width = (unsigned int)width;
|
||||
bitmap->rows = (unsigned int)height;
|
||||
bitmap->pitch = pitch;
|
||||
}
|
||||
|
||||
|
||||
FT_BASE_DEF( void )
|
||||
ft_glyphslot_set_bitmap( FT_GlyphSlot slot,
|
||||
FT_Byte* buffer )
|
||||
|
|
@ -462,7 +600,8 @@
|
|||
|
||||
|
||||
Exit:
|
||||
FT_TRACE4(( "FT_New_GlyphSlot: Return %d\n", error ));
|
||||
FT_TRACE4(( "FT_New_GlyphSlot: Return 0x%x\n", error ));
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
|
@ -575,34 +714,42 @@
|
|||
if ( vertical )
|
||||
{
|
||||
metrics->horiBearingX = FT_PIX_FLOOR( metrics->horiBearingX );
|
||||
metrics->horiBearingY = FT_PIX_CEIL ( metrics->horiBearingY );
|
||||
metrics->horiBearingY = FT_PIX_CEIL_LONG( metrics->horiBearingY );
|
||||
|
||||
right = FT_PIX_CEIL( metrics->vertBearingX + metrics->width );
|
||||
bottom = FT_PIX_CEIL( metrics->vertBearingY + metrics->height );
|
||||
right = FT_PIX_CEIL_LONG( ADD_LONG( metrics->vertBearingX,
|
||||
metrics->width ) );
|
||||
bottom = FT_PIX_CEIL_LONG( ADD_LONG( metrics->vertBearingY,
|
||||
metrics->height ) );
|
||||
|
||||
metrics->vertBearingX = FT_PIX_FLOOR( metrics->vertBearingX );
|
||||
metrics->vertBearingY = FT_PIX_FLOOR( metrics->vertBearingY );
|
||||
|
||||
metrics->width = right - metrics->vertBearingX;
|
||||
metrics->height = bottom - metrics->vertBearingY;
|
||||
metrics->width = SUB_LONG( right,
|
||||
metrics->vertBearingX );
|
||||
metrics->height = SUB_LONG( bottom,
|
||||
metrics->vertBearingY );
|
||||
}
|
||||
else
|
||||
{
|
||||
metrics->vertBearingX = FT_PIX_FLOOR( metrics->vertBearingX );
|
||||
metrics->vertBearingY = FT_PIX_FLOOR( metrics->vertBearingY );
|
||||
|
||||
right = FT_PIX_CEIL ( metrics->horiBearingX + metrics->width );
|
||||
bottom = FT_PIX_FLOOR( metrics->horiBearingY - metrics->height );
|
||||
right = FT_PIX_CEIL_LONG( ADD_LONG( metrics->horiBearingX,
|
||||
metrics->width ) );
|
||||
bottom = FT_PIX_FLOOR( SUB_LONG( metrics->horiBearingY,
|
||||
metrics->height ) );
|
||||
|
||||
metrics->horiBearingX = FT_PIX_FLOOR( metrics->horiBearingX );
|
||||
metrics->horiBearingY = FT_PIX_CEIL ( metrics->horiBearingY );
|
||||
metrics->horiBearingY = FT_PIX_CEIL_LONG( metrics->horiBearingY );
|
||||
|
||||
metrics->width = right - metrics->horiBearingX;
|
||||
metrics->height = metrics->horiBearingY - bottom;
|
||||
metrics->width = SUB_LONG( right,
|
||||
metrics->horiBearingX );
|
||||
metrics->height = SUB_LONG( metrics->horiBearingY,
|
||||
bottom );
|
||||
}
|
||||
|
||||
metrics->horiAdvance = FT_PIX_ROUND( metrics->horiAdvance );
|
||||
metrics->vertAdvance = FT_PIX_ROUND( metrics->vertAdvance );
|
||||
metrics->horiAdvance = FT_PIX_ROUND_LONG( metrics->horiAdvance );
|
||||
metrics->vertAdvance = FT_PIX_ROUND_LONG( metrics->vertAdvance );
|
||||
}
|
||||
#endif /* GRID_FIT_METRICS */
|
||||
|
||||
|
|
@ -657,9 +804,13 @@
|
|||
* Determine whether we need to auto-hint or not.
|
||||
* The general rules are:
|
||||
*
|
||||
* - Do only auto-hinting if we have a hinter module, a scalable font
|
||||
* format dealing with outlines, and no transforms except simple
|
||||
* slants and/or rotations by integer multiples of 90 degrees.
|
||||
* - Do only auto-hinting if we have
|
||||
*
|
||||
* - a hinter module,
|
||||
* - a scalable font format dealing with outlines,
|
||||
* - not a tricky font, and
|
||||
* - no transforms except simple slants and/or rotations by
|
||||
* integer multiples of 90 degrees.
|
||||
*
|
||||
* - Then, auto-hint if FT_LOAD_FORCE_AUTOHINT is set or if we don't
|
||||
* have a native font hinter.
|
||||
|
|
@ -689,8 +840,15 @@
|
|||
else
|
||||
{
|
||||
FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags );
|
||||
FT_Bool is_light_type1;
|
||||
|
||||
|
||||
/* only the new Adobe engine (for both CFF and Type 1) is `light'; */
|
||||
/* we use `strstr' to catch both `Type 1' and `CID Type 1' */
|
||||
is_light_type1 =
|
||||
ft_strstr( FT_Get_Font_Format( face ), "Type 1" ) != NULL &&
|
||||
((PS_Driver)driver)->hinting_engine == FT_HINTING_ADOBE;
|
||||
|
||||
/* the check for `num_locations' assures that we actually */
|
||||
/* test for instructions in a TTF and not in a CFF-based OTF */
|
||||
/* */
|
||||
|
|
@ -698,8 +856,9 @@
|
|||
/* check the size of the `fpgm' and `prep' tables, too -- */
|
||||
/* the assumption is that there don't exist real TTFs where */
|
||||
/* both `fpgm' and `prep' tables are missing */
|
||||
if ( ( mode == FT_RENDER_MODE_LIGHT &&
|
||||
!FT_DRIVER_HINTS_LIGHTLY( driver ) ) ||
|
||||
if ( ( mode == FT_RENDER_MODE_LIGHT &&
|
||||
( !FT_DRIVER_HINTS_LIGHTLY( driver ) &&
|
||||
!is_light_type1 ) ) ||
|
||||
( FT_IS_SFNT( face ) &&
|
||||
ttface->num_locations &&
|
||||
ttface->max_profile.maxSizeOfInstructions == 0 &&
|
||||
|
|
@ -719,8 +878,8 @@
|
|||
/* XXX: This is really a temporary hack that should disappear */
|
||||
/* promptly with FreeType 2.1! */
|
||||
/* */
|
||||
if ( FT_HAS_FIXED_SIZES( face ) &&
|
||||
( load_flags & FT_LOAD_NO_BITMAP ) == 0 )
|
||||
if ( FT_HAS_FIXED_SIZES( face ) &&
|
||||
( load_flags & FT_LOAD_NO_BITMAP ) == 0 )
|
||||
{
|
||||
error = driver->clazz->load_glyph( slot, face->size,
|
||||
glyph_index,
|
||||
|
|
@ -788,7 +947,7 @@
|
|||
|
||||
/* compute the linear advance in 16.16 pixels */
|
||||
if ( ( load_flags & FT_LOAD_LINEAR_DESIGN ) == 0 &&
|
||||
( FT_IS_SCALABLE( face ) ) )
|
||||
FT_IS_SCALABLE( face ) )
|
||||
{
|
||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||
|
||||
|
|
@ -836,28 +995,37 @@
|
|||
}
|
||||
}
|
||||
|
||||
FT_TRACE5(( " x advance: %d\n" , slot->advance.x ));
|
||||
FT_TRACE5(( " y advance: %d\n" , slot->advance.y ));
|
||||
|
||||
FT_TRACE5(( " linear x advance: %d\n" , slot->linearHoriAdvance ));
|
||||
FT_TRACE5(( " linear y advance: %d\n" , slot->linearVertAdvance ));
|
||||
|
||||
/* do we need to render the image now? */
|
||||
/* do we need to render the image or preset the bitmap now? */
|
||||
if ( !error &&
|
||||
( load_flags & FT_LOAD_NO_SCALE ) == 0 &&
|
||||
slot->format != FT_GLYPH_FORMAT_BITMAP &&
|
||||
slot->format != FT_GLYPH_FORMAT_COMPOSITE &&
|
||||
load_flags & FT_LOAD_RENDER )
|
||||
slot->format != FT_GLYPH_FORMAT_COMPOSITE )
|
||||
{
|
||||
FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags );
|
||||
|
||||
|
||||
if ( mode == FT_RENDER_MODE_NORMAL &&
|
||||
(load_flags & FT_LOAD_MONOCHROME ) )
|
||||
if ( mode == FT_RENDER_MODE_NORMAL &&
|
||||
load_flags & FT_LOAD_MONOCHROME )
|
||||
mode = FT_RENDER_MODE_MONO;
|
||||
|
||||
error = FT_Render_Glyph( slot, mode );
|
||||
if ( load_flags & FT_LOAD_RENDER )
|
||||
error = FT_Render_Glyph( slot, mode );
|
||||
else
|
||||
ft_glyphslot_preset_bitmap( slot, mode, NULL );
|
||||
}
|
||||
|
||||
FT_TRACE5(( "FT_Load_Glyph: index %d, flags %x\n",
|
||||
glyph_index, load_flags ));
|
||||
FT_TRACE5(( " x advance: %f\n", slot->advance.x / 64.0 ));
|
||||
FT_TRACE5(( " y advance: %f\n", slot->advance.y / 64.0 ));
|
||||
FT_TRACE5(( " linear x advance: %f\n",
|
||||
slot->linearHoriAdvance / 65536.0 ));
|
||||
FT_TRACE5(( " linear y advance: %f\n",
|
||||
slot->linearVertAdvance / 65536.0 ));
|
||||
FT_TRACE5(( " bitmap %dx%d, mode %d\n",
|
||||
slot->bitmap.width, slot->bitmap.rows,
|
||||
slot->bitmap.pixel_mode ));
|
||||
|
||||
Exit:
|
||||
return error;
|
||||
}
|
||||
|
|
@ -1185,6 +1353,8 @@
|
|||
}
|
||||
#endif
|
||||
|
||||
face->internal->random_seed = -1;
|
||||
|
||||
if ( clazz->init_face )
|
||||
error = clazz->init_face( *astream,
|
||||
face,
|
||||
|
|
@ -2031,13 +2201,15 @@
|
|||
{
|
||||
FT_TRACE3(( "Skip rule %d: darwin vfs resource fork"
|
||||
" is already checked and"
|
||||
" no font is found\n", i ));
|
||||
" no font is found\n",
|
||||
i ));
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( errors[i] )
|
||||
{
|
||||
FT_TRACE3(( "Error[%d] has occurred in rule %d\n", errors[i], i ));
|
||||
FT_TRACE3(( "Error 0x%x has occurred in rule %d\n",
|
||||
errors[i], i ));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -2396,7 +2568,7 @@
|
|||
if ( bsize->height < 0 || bsize->x_ppem < 0 || bsize->y_ppem < 0 )
|
||||
{
|
||||
FT_TRACE0(( "FT_Open_Face:"
|
||||
" Invalid bitmap dimensions for stroke %d,"
|
||||
" Invalid bitmap dimensions for strike %d,"
|
||||
" now disabled\n", i ));
|
||||
bsize->width = 0;
|
||||
bsize->height = 0;
|
||||
|
|
@ -2421,6 +2593,13 @@
|
|||
internal->transform_delta.y = 0;
|
||||
|
||||
internal->refcount = 1;
|
||||
|
||||
internal->no_stem_darkening = -1;
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
|
||||
/* Per-face filtering can only be set up by FT_Face_Properties */
|
||||
internal->lcd_filter_func = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
if ( aface )
|
||||
|
|
@ -2440,15 +2619,17 @@
|
|||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
if ( !error && face_index < 0 )
|
||||
{
|
||||
FT_TRACE3(( "FT_Open_Face: The font has %ld faces\n"
|
||||
" and %ld named instances for face %ld\n",
|
||||
FT_TRACE3(( "FT_Open_Face: The font has %ld face%s\n"
|
||||
" and %ld named instance%s for face %ld\n",
|
||||
face->num_faces,
|
||||
face->num_faces == 1 ? "" : "s",
|
||||
face->style_flags >> 16,
|
||||
( face->style_flags >> 16 ) == 1 ? "" : "s",
|
||||
-face_index - 1 ));
|
||||
}
|
||||
#endif
|
||||
|
||||
FT_TRACE4(( "FT_Open_Face: Return %d\n", error ));
|
||||
FT_TRACE4(( "FT_Open_Face: Return 0x%x\n", error ));
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
@ -2589,6 +2770,8 @@
|
|||
FT_Size size = NULL;
|
||||
FT_ListNode node = NULL;
|
||||
|
||||
FT_Size_Internal internal = NULL;
|
||||
|
||||
|
||||
if ( !face )
|
||||
return FT_THROW( Invalid_Face_Handle );
|
||||
|
|
@ -2611,8 +2794,10 @@
|
|||
|
||||
size->face = face;
|
||||
|
||||
/* for now, do not use any internal fields in size objects */
|
||||
size->internal = NULL;
|
||||
if ( FT_NEW( internal ) )
|
||||
goto Exit;
|
||||
|
||||
size->internal = internal;
|
||||
|
||||
if ( clazz->init_size )
|
||||
error = clazz->init_size( size );
|
||||
|
|
@ -2836,18 +3021,6 @@
|
|||
metrics->height = bsize->height << 6;
|
||||
metrics->max_advance = bsize->x_ppem;
|
||||
}
|
||||
|
||||
FT_TRACE5(( "FT_Select_Metrics:\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2956,18 +3129,6 @@
|
|||
metrics->x_scale = 1L << 16;
|
||||
metrics->y_scale = 1L << 16;
|
||||
}
|
||||
|
||||
FT_TRACE5(( "FT_Request_Metrics:\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2977,6 +3138,7 @@
|
|||
FT_Select_Size( FT_Face face,
|
||||
FT_Int strike_index )
|
||||
{
|
||||
FT_Error error = FT_Err_Ok;
|
||||
FT_Driver_Class clazz;
|
||||
|
||||
|
||||
|
|
@ -2990,36 +3152,37 @@
|
|||
|
||||
if ( clazz->select_size )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
error = clazz->select_size( face->size, (FT_ULong)strike_index );
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
{
|
||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||
FT_TRACE5(( "FT_Select_Size (%s driver):\n",
|
||||
face->driver->root.clazz->module_name ));
|
||||
}
|
||||
else
|
||||
{
|
||||
FT_Select_Metrics( face, (FT_ULong)strike_index );
|
||||
|
||||
|
||||
FT_TRACE5(( "FT_Select_Size (font driver's `select_size'):\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
#endif
|
||||
|
||||
return error;
|
||||
FT_TRACE5(( "FT_Select_Size:\n" ));
|
||||
}
|
||||
|
||||
FT_Select_Metrics( face, (FT_ULong)strike_index );
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
{
|
||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||
|
||||
return FT_Err_Ok;
|
||||
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
#endif
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -3029,6 +3192,7 @@
|
|||
FT_Request_Size( FT_Face face,
|
||||
FT_Size_Request req )
|
||||
{
|
||||
FT_Error error = FT_Err_Ok;
|
||||
FT_Driver_Class clazz;
|
||||
FT_ULong strike_index;
|
||||
|
||||
|
|
@ -3040,59 +3204,60 @@
|
|||
req->type >= FT_SIZE_REQUEST_TYPE_MAX )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
/* signal the auto-hinter to recompute its size metrics */
|
||||
/* (if requested) */
|
||||
face->size->internal->autohint_metrics.x_scale = 0;
|
||||
|
||||
clazz = face->driver->clazz;
|
||||
|
||||
if ( clazz->request_size )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
error = clazz->request_size( face->size, req );
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
{
|
||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||
|
||||
|
||||
FT_TRACE5(( "FT_Request_Size (font driver's `request_size'):\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
#endif
|
||||
|
||||
return error;
|
||||
FT_TRACE5(( "FT_Request_Size (%s driver):\n",
|
||||
face->driver->root.clazz->module_name ));
|
||||
}
|
||||
|
||||
/*
|
||||
* The reason that a driver doesn't have `request_size' defined is
|
||||
* either that the scaling here suffices or that the supported formats
|
||||
* are bitmap-only and size matching is not implemented.
|
||||
*
|
||||
* In the latter case, a simple size matching is done.
|
||||
*/
|
||||
if ( !FT_IS_SCALABLE( face ) && FT_HAS_FIXED_SIZES( face ) )
|
||||
else if ( !FT_IS_SCALABLE( face ) && FT_HAS_FIXED_SIZES( face ) )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
/*
|
||||
* The reason that a driver doesn't have `request_size' defined is
|
||||
* either that the scaling here suffices or that the supported formats
|
||||
* are bitmap-only and size matching is not implemented.
|
||||
*
|
||||
* In the latter case, a simple size matching is done.
|
||||
*/
|
||||
error = FT_Match_Size( face, req, 0, &strike_index );
|
||||
if ( error )
|
||||
return error;
|
||||
|
||||
return FT_Select_Size( face, (FT_Int)strike_index );
|
||||
}
|
||||
else
|
||||
{
|
||||
FT_Request_Metrics( face, req );
|
||||
|
||||
FT_Request_Metrics( face, req );
|
||||
FT_TRACE5(( "FT_Request_Size:\n" ));
|
||||
}
|
||||
|
||||
return FT_Err_Ok;
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
{
|
||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||
|
||||
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
#endif
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -3584,6 +3749,85 @@
|
|||
}
|
||||
|
||||
|
||||
/* documentation is in freetype.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Face_Properties( FT_Face face,
|
||||
FT_UInt num_properties,
|
||||
FT_Parameter* properties )
|
||||
{
|
||||
FT_Error error = FT_Err_Ok;
|
||||
|
||||
|
||||
if ( num_properties > 0 && !properties )
|
||||
{
|
||||
error = FT_THROW( Invalid_Argument );
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
for ( ; num_properties > 0; num_properties-- )
|
||||
{
|
||||
if ( properties->tag == FT_PARAM_TAG_STEM_DARKENING )
|
||||
{
|
||||
if ( properties->data )
|
||||
{
|
||||
if ( *( (FT_Bool*)properties->data ) == TRUE )
|
||||
face->internal->no_stem_darkening = FALSE;
|
||||
else
|
||||
face->internal->no_stem_darkening = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* use module default */
|
||||
face->internal->no_stem_darkening = -1;
|
||||
}
|
||||
}
|
||||
else if ( properties->tag == FT_PARAM_TAG_LCD_FILTER_WEIGHTS )
|
||||
{
|
||||
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
|
||||
if ( properties->data )
|
||||
{
|
||||
ft_memcpy( face->internal->lcd_weights,
|
||||
properties->data,
|
||||
FT_LCD_FILTER_FIVE_TAPS );
|
||||
face->internal->lcd_filter_func = ft_lcd_filter_fir;
|
||||
}
|
||||
#else
|
||||
error = FT_THROW( Unimplemented_Feature );
|
||||
goto Exit;
|
||||
#endif
|
||||
}
|
||||
else if ( properties->tag == FT_PARAM_TAG_RANDOM_SEED )
|
||||
{
|
||||
if ( properties->data )
|
||||
{
|
||||
face->internal->random_seed = *( (FT_Int32*)properties->data );
|
||||
if ( face->internal->random_seed < 0 )
|
||||
face->internal->random_seed = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* use module default */
|
||||
face->internal->random_seed = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error = FT_THROW( Invalid_Argument );
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
if ( error )
|
||||
break;
|
||||
|
||||
properties++;
|
||||
}
|
||||
|
||||
Exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in freetype.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_UInt )
|
||||
|
|
@ -3609,12 +3853,14 @@
|
|||
|
||||
if ( charcode > 0xFFFFFFFFUL )
|
||||
{
|
||||
FT_TRACE1(( "FT_Get_Char_Index: too large charcode" ));
|
||||
FT_TRACE1(( "FT_Face_GetCharVariantIndex:"
|
||||
" too large charcode" ));
|
||||
FT_TRACE1(( " 0x%x is truncated\n", charcode ));
|
||||
}
|
||||
if ( variantSelector > 0xFFFFFFFFUL )
|
||||
{
|
||||
FT_TRACE1(( "FT_Get_Char_Index: too large variantSelector" ));
|
||||
FT_TRACE1(( "FT_Face_GetCharVariantIndex:"
|
||||
" too large variantSelector" ));
|
||||
FT_TRACE1(( " 0x%x is truncated\n", variantSelector ));
|
||||
}
|
||||
|
||||
|
|
@ -3650,12 +3896,14 @@
|
|||
|
||||
if ( charcode > 0xFFFFFFFFUL )
|
||||
{
|
||||
FT_TRACE1(( "FT_Get_Char_Index: too large charcode" ));
|
||||
FT_TRACE1(( "FT_Face_GetCharVariantIsDefault:"
|
||||
" too large charcode" ));
|
||||
FT_TRACE1(( " 0x%x is truncated\n", charcode ));
|
||||
}
|
||||
if ( variantSelector > 0xFFFFFFFFUL )
|
||||
{
|
||||
FT_TRACE1(( "FT_Get_Char_Index: too large variantSelector" ));
|
||||
FT_TRACE1(( "FT_Face_GetCharVariantIsDefault:"
|
||||
" too large variantSelector" ));
|
||||
FT_TRACE1(( " 0x%x is truncated\n", variantSelector ));
|
||||
}
|
||||
|
||||
|
|
@ -3718,7 +3966,7 @@
|
|||
|
||||
if ( charcode > 0xFFFFFFFFUL )
|
||||
{
|
||||
FT_TRACE1(( "FT_Get_Char_Index: too large charcode" ));
|
||||
FT_TRACE1(( "FT_Face_GetVariantsOfChar: too large charcode" ));
|
||||
FT_TRACE1(( " 0x%x is truncated\n", charcode ));
|
||||
}
|
||||
|
||||
|
|
@ -4294,43 +4542,97 @@
|
|||
*/
|
||||
|
||||
/* we use FT_TRACE3 in this block */
|
||||
if ( ft_trace_levels[trace_bitmap] >= 3 )
|
||||
if ( !error &&
|
||||
ft_trace_levels[trace_bitmap] >= 3 &&
|
||||
slot->bitmap.buffer )
|
||||
{
|
||||
FT_Bitmap bitmap;
|
||||
FT_Error err;
|
||||
|
||||
|
||||
FT_Bitmap_Init( &bitmap );
|
||||
|
||||
/* we convert to a single bitmap format for computing the checksum */
|
||||
if ( !error && slot->bitmap.buffer )
|
||||
/* this also converts the bitmap flow to `down' (i.e., pitch > 0) */
|
||||
err = FT_Bitmap_Convert( library, &slot->bitmap, &bitmap, 1 );
|
||||
if ( !err )
|
||||
{
|
||||
FT_Bitmap bitmap;
|
||||
FT_Error err;
|
||||
MD5_CTX ctx;
|
||||
unsigned char md5[16];
|
||||
unsigned long coverage = 0;
|
||||
int i, j;
|
||||
int rows = (int)bitmap.rows;
|
||||
int pitch = bitmap.pitch;
|
||||
|
||||
|
||||
FT_Bitmap_Init( &bitmap );
|
||||
FT_TRACE3(( "FT_Render_Glyph: bitmap %dx%d, mode %d\n",
|
||||
rows, pitch, slot->bitmap.pixel_mode ));
|
||||
|
||||
/* this also converts the bitmap flow to `down' (i.e., pitch > 0) */
|
||||
err = FT_Bitmap_Convert( library, &slot->bitmap, &bitmap, 1 );
|
||||
if ( !err )
|
||||
{
|
||||
MD5_CTX ctx;
|
||||
unsigned char md5[16];
|
||||
int i;
|
||||
unsigned int rows = bitmap.rows;
|
||||
unsigned int pitch = (unsigned int)bitmap.pitch;
|
||||
for ( i = 0; i < rows; i++ )
|
||||
for ( j = 0; j < pitch; j++ )
|
||||
coverage += bitmap.buffer[i * pitch + j];
|
||||
|
||||
FT_TRACE3(( " Total coverage: %lu\n", coverage ));
|
||||
|
||||
MD5_Init( &ctx );
|
||||
if ( bitmap.buffer )
|
||||
MD5_Update( &ctx, bitmap.buffer, rows * pitch );
|
||||
MD5_Final( md5, &ctx );
|
||||
MD5_Init( &ctx );
|
||||
if ( bitmap.buffer )
|
||||
MD5_Update( &ctx, bitmap.buffer,
|
||||
(unsigned long)rows * (unsigned long)pitch );
|
||||
MD5_Final( md5, &ctx );
|
||||
|
||||
FT_TRACE3(( "MD5 checksum for %dx%d bitmap:\n"
|
||||
" ",
|
||||
rows, pitch ));
|
||||
for ( i = 0; i < 16; i++ )
|
||||
FT_TRACE3(( "%02X", md5[i] ));
|
||||
FT_TRACE3(( "\n" ));
|
||||
}
|
||||
|
||||
FT_Bitmap_Done( library, &bitmap );
|
||||
FT_TRACE3(( " MD5 checksum: " ));
|
||||
for ( i = 0; i < 16; i++ )
|
||||
FT_TRACE3(( "%02X", md5[i] ));
|
||||
FT_TRACE3(( "\n" ));
|
||||
}
|
||||
|
||||
FT_Bitmap_Done( library, &bitmap );
|
||||
}
|
||||
|
||||
/*
|
||||
* Dump bitmap in Netpbm format (PBM or PGM).
|
||||
*/
|
||||
|
||||
/* we use FT_TRACE7 in this block */
|
||||
if ( !error &&
|
||||
ft_trace_levels[trace_bitmap] >= 7 &&
|
||||
slot->bitmap.rows < 128U &&
|
||||
slot->bitmap.width < 128U &&
|
||||
slot->bitmap.buffer )
|
||||
{
|
||||
int rows = (int)slot->bitmap.rows;
|
||||
int width = (int)slot->bitmap.width;
|
||||
int pitch = slot->bitmap.pitch;
|
||||
int i, j, m;
|
||||
unsigned char* topleft = slot->bitmap.buffer;
|
||||
|
||||
if ( pitch < 0 )
|
||||
topleft -= pitch * ( rows - 1 );
|
||||
|
||||
FT_TRACE7(( "Netpbm image: start\n" ));
|
||||
switch ( slot->bitmap.pixel_mode )
|
||||
{
|
||||
case FT_PIXEL_MODE_MONO:
|
||||
FT_TRACE7(( "P1 %d %d\n", width, rows ));
|
||||
for ( i = 0; i < rows; i++ )
|
||||
{
|
||||
for ( j = 0; j < width; )
|
||||
for ( m = 128; m > 0 && j < width; m >>= 1, j++ )
|
||||
FT_TRACE7(( " %d", ( topleft[i * pitch + j / 8] & m ) != 0 ));
|
||||
FT_TRACE7(( "\n" ));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
FT_TRACE7(( "P2 %d %d 255\n", width, rows ));
|
||||
for ( i = 0; i < rows; i++ )
|
||||
{
|
||||
for ( j = 0; j < width; j += 1 )
|
||||
FT_TRACE7(( " %3u", topleft[i * pitch + j] ));
|
||||
FT_TRACE7(( "\n" ));
|
||||
}
|
||||
}
|
||||
FT_TRACE7(( "Netpbm image: end\n" ));
|
||||
}
|
||||
|
||||
#undef FT_COMPONENT
|
||||
|
|
@ -4437,7 +4739,7 @@
|
|||
if ( !clazz )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
/* check freetype version */
|
||||
/* check FreeType version */
|
||||
if ( clazz->module_requires > FREETYPE_VER_FIXED )
|
||||
return FT_THROW( Invalid_Version );
|
||||
|
||||
|
|
@ -4861,10 +5163,6 @@
|
|||
goto Fail;
|
||||
#endif
|
||||
|
||||
/* we don't use raster_pool anymore. */
|
||||
library->raster_pool_size = 0;
|
||||
library->raster_pool = NULL;
|
||||
|
||||
library->version_major = FREETYPE_MAJOR;
|
||||
library->version_minor = FREETYPE_MINOR;
|
||||
library->version_patch = FREETYPE_PATCH;
|
||||
|
|
@ -4879,9 +5177,9 @@
|
|||
#ifdef FT_CONFIG_OPTION_PIC
|
||||
Fail:
|
||||
ft_pic_container_destroy( library );
|
||||
#endif
|
||||
FT_FREE( library );
|
||||
return error;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType API for validating OpenType tables (body). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* Copyright 2004-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType outline management (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -286,12 +286,13 @@
|
|||
FT_TRACE5(( "FT_Outline_Decompose: Done\n", n ));
|
||||
return FT_Err_Ok;
|
||||
|
||||
Exit:
|
||||
FT_TRACE5(( "FT_Outline_Decompose: Error %d\n", error ));
|
||||
return error;
|
||||
|
||||
Invalid_Outline:
|
||||
return FT_THROW( Invalid_Outline );
|
||||
error = FT_THROW( Invalid_Outline );
|
||||
/* fall through */
|
||||
|
||||
Exit:
|
||||
FT_TRACE5(( "FT_Outline_Decompose: Error 0x%x\n", error ));
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -540,8 +541,8 @@
|
|||
|
||||
for ( n = 0; n < outline->n_points; n++ )
|
||||
{
|
||||
vec->x += xOffset;
|
||||
vec->y += yOffset;
|
||||
vec->x = ADD_LONG( vec->x, xOffset );
|
||||
vec->y = ADD_LONG( vec->y, yOffset );
|
||||
vec++;
|
||||
}
|
||||
}
|
||||
|
|
@ -1088,7 +1089,8 @@
|
|||
v_cur.x = points[n].x >> xshift;
|
||||
v_cur.y = points[n].y >> yshift;
|
||||
|
||||
area += ( v_cur.y - v_prev.y ) * ( v_cur.x + v_prev.x );
|
||||
area = ADD_LONG( area,
|
||||
( v_cur.y - v_prev.y ) * ( v_cur.x + v_prev.x ) );
|
||||
|
||||
v_prev = v_cur;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
/* ftpatent.c */
|
||||
/* */
|
||||
/* FreeType API for checking patented TrueType bytecode instructions */
|
||||
/* (body). Obsolete, retained for backwards compatibility. */
|
||||
/* (body). Obsolete, retained for backward compatibility. */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* Copyright 2007-2018 by */
|
||||
/* David Turner. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType API for accessing PFR-specific data (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType position independent code services (body). */
|
||||
/* */
|
||||
/* Copyright 2009-2016 by */
|
||||
/* Copyright 2009-2018 by */
|
||||
/* Oran Agra and Mickey Gabel. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
285
modules/freetype2/src/base/ftpsprop.c
Normal file
285
modules/freetype2/src/base/ftpsprop.c
Normal file
|
|
@ -0,0 +1,285 @@
|
|||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftpsprop.c */
|
||||
/* */
|
||||
/* Get and set properties of PostScript drivers (body). */
|
||||
/* See `ftdriver.h' for available properties. */
|
||||
/* */
|
||||
/* Copyright 2017-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_DRIVER_H
|
||||
#include FT_INTERNAL_DEBUG_H
|
||||
#include FT_INTERNAL_POSTSCRIPT_AUX_H
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_INTERNAL_POSTSCRIPT_PROPS_H
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* The macro FT_COMPONENT is used in trace mode. It is an implicit */
|
||||
/* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */
|
||||
/* messages during execution. */
|
||||
/* */
|
||||
#undef FT_COMPONENT
|
||||
#define FT_COMPONENT trace_psprops
|
||||
|
||||
|
||||
FT_BASE_CALLBACK_DEF( FT_Error )
|
||||
ps_property_set( FT_Module module, /* PS_Driver */
|
||||
const char* property_name,
|
||||
const void* value,
|
||||
FT_Bool value_is_string )
|
||||
{
|
||||
FT_Error error = FT_Err_Ok;
|
||||
PS_Driver driver = (PS_Driver)module;
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
|
||||
FT_UNUSED( value_is_string );
|
||||
#endif
|
||||
|
||||
|
||||
if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
||||
{
|
||||
FT_Int* darken_params;
|
||||
FT_Int x1, y1, x2, y2, x3, y3, x4, y4;
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
|
||||
FT_Int dp[8];
|
||||
|
||||
|
||||
if ( value_is_string )
|
||||
{
|
||||
const char* s = (const char*)value;
|
||||
char* ep;
|
||||
int i;
|
||||
|
||||
|
||||
/* eight comma-separated numbers */
|
||||
for ( i = 0; i < 7; i++ )
|
||||
{
|
||||
dp[i] = (FT_Int)ft_strtol( s, &ep, 10 );
|
||||
if ( *ep != ',' || s == ep )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
s = ep + 1;
|
||||
}
|
||||
|
||||
dp[7] = (FT_Int)ft_strtol( s, &ep, 10 );
|
||||
if ( !( *ep == '\0' || *ep == ' ' ) || s == ep )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
darken_params = dp;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
darken_params = (FT_Int*)value;
|
||||
|
||||
x1 = darken_params[0];
|
||||
y1 = darken_params[1];
|
||||
x2 = darken_params[2];
|
||||
y2 = darken_params[3];
|
||||
x3 = darken_params[4];
|
||||
y3 = darken_params[5];
|
||||
x4 = darken_params[6];
|
||||
y4 = darken_params[7];
|
||||
|
||||
if ( x1 < 0 || x2 < 0 || x3 < 0 || x4 < 0 ||
|
||||
y1 < 0 || y2 < 0 || y3 < 0 || y4 < 0 ||
|
||||
x1 > x2 || x2 > x3 || x3 > x4 ||
|
||||
y1 > 500 || y2 > 500 || y3 > 500 || y4 > 500 )
|
||||
return FT_THROW( Invalid_Argument );
|
||||
|
||||
driver->darken_params[0] = x1;
|
||||
driver->darken_params[1] = y1;
|
||||
driver->darken_params[2] = x2;
|
||||
driver->darken_params[3] = y2;
|
||||
driver->darken_params[4] = x3;
|
||||
driver->darken_params[5] = y3;
|
||||
driver->darken_params[6] = x4;
|
||||
driver->darken_params[7] = y4;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
else if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
||||
{
|
||||
#if defined( CFF_CONFIG_OPTION_OLD_ENGINE ) || \
|
||||
defined( T1_CONFIG_OPTION_OLD_ENGINE )
|
||||
const char* module_name = module->clazz->module_name;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
|
||||
if ( value_is_string )
|
||||
{
|
||||
const char* s = (const char*)value;
|
||||
|
||||
|
||||
if ( !ft_strcmp( s, "adobe" ) )
|
||||
driver->hinting_engine = FT_HINTING_ADOBE;
|
||||
|
||||
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
|
||||
else if ( !ft_strcmp( module_name, "cff" ) &&
|
||||
!ft_strcmp( s, "freetype" ) )
|
||||
driver->hinting_engine = FT_HINTING_FREETYPE;
|
||||
#endif
|
||||
|
||||
#ifdef T1_CONFIG_OPTION_OLD_ENGINE
|
||||
else if ( ( !ft_strcmp( module_name, "type1" ) ||
|
||||
!ft_strcmp( module_name, "t1cid" ) ) &&
|
||||
!ft_strcmp( s, "freetype" ) )
|
||||
driver->hinting_engine = FT_HINTING_FREETYPE;
|
||||
#endif
|
||||
|
||||
else
|
||||
return FT_THROW( Invalid_Argument );
|
||||
}
|
||||
else
|
||||
#endif /* FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES */
|
||||
{
|
||||
FT_UInt* hinting_engine = (FT_UInt*)value;
|
||||
|
||||
|
||||
if ( *hinting_engine == FT_HINTING_ADOBE
|
||||
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
|
||||
|| ( *hinting_engine == FT_HINTING_FREETYPE &&
|
||||
!ft_strcmp( module_name, "cff" ) )
|
||||
#endif
|
||||
#ifdef T1_CONFIG_OPTION_OLD_ENGINE
|
||||
|| ( *hinting_engine == FT_HINTING_FREETYPE &&
|
||||
( !ft_strcmp( module_name, "type1" ) ||
|
||||
!ft_strcmp( module_name, "t1cid" ) ) )
|
||||
#endif
|
||||
)
|
||||
driver->hinting_engine = *hinting_engine;
|
||||
else
|
||||
error = FT_ERR( Unimplemented_Feature );
|
||||
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
else if ( !ft_strcmp( property_name, "no-stem-darkening" ) )
|
||||
{
|
||||
#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
|
||||
if ( value_is_string )
|
||||
{
|
||||
const char* s = (const char*)value;
|
||||
long nsd = ft_strtol( s, NULL, 10 );
|
||||
|
||||
|
||||
if ( !nsd )
|
||||
driver->no_stem_darkening = FALSE;
|
||||
else
|
||||
driver->no_stem_darkening = TRUE;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
FT_Bool* no_stem_darkening = (FT_Bool*)value;
|
||||
|
||||
|
||||
driver->no_stem_darkening = *no_stem_darkening;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
else if ( !ft_strcmp( property_name, "random-seed" ) )
|
||||
{
|
||||
FT_Int32 random_seed;
|
||||
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
|
||||
if ( value_is_string )
|
||||
{
|
||||
const char* s = (const char*)value;
|
||||
|
||||
|
||||
random_seed = (FT_Int32)ft_strtol( s, NULL, 10 );
|
||||
}
|
||||
else
|
||||
#endif
|
||||
random_seed = *(FT_Int32*)value;
|
||||
|
||||
if ( random_seed < 0 )
|
||||
random_seed = 0;
|
||||
|
||||
driver->random_seed = random_seed;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
FT_TRACE0(( "ps_property_set: missing property `%s'\n",
|
||||
property_name ));
|
||||
return FT_THROW( Missing_Property );
|
||||
}
|
||||
|
||||
|
||||
FT_BASE_CALLBACK_DEF( FT_Error )
|
||||
ps_property_get( FT_Module module, /* PS_Driver */
|
||||
const char* property_name,
|
||||
void* value )
|
||||
{
|
||||
FT_Error error = FT_Err_Ok;
|
||||
PS_Driver driver = (PS_Driver)module;
|
||||
|
||||
|
||||
if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
||||
{
|
||||
FT_Int* darken_params = driver->darken_params;
|
||||
FT_Int* val = (FT_Int*)value;
|
||||
|
||||
|
||||
val[0] = darken_params[0];
|
||||
val[1] = darken_params[1];
|
||||
val[2] = darken_params[2];
|
||||
val[3] = darken_params[3];
|
||||
val[4] = darken_params[4];
|
||||
val[5] = darken_params[5];
|
||||
val[6] = darken_params[6];
|
||||
val[7] = darken_params[7];
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
else if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
||||
{
|
||||
FT_UInt hinting_engine = driver->hinting_engine;
|
||||
FT_UInt* val = (FT_UInt*)value;
|
||||
|
||||
|
||||
*val = hinting_engine;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
else if ( !ft_strcmp( property_name, "no-stem-darkening" ) )
|
||||
{
|
||||
FT_Bool no_stem_darkening = driver->no_stem_darkening;
|
||||
FT_Bool* val = (FT_Bool*)value;
|
||||
|
||||
|
||||
*val = no_stem_darkening;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
FT_TRACE0(( "ps_property_get: missing property `%s'\n",
|
||||
property_name ));
|
||||
return FT_THROW( Missing_Property );
|
||||
}
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Embedded resource forks accessor (body). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* Copyright 2004-2018 by */
|
||||
/* Masatake YAMATO and Redhat K.K. */
|
||||
/* */
|
||||
/* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */
|
||||
|
|
@ -271,7 +271,13 @@
|
|||
if ( FT_STREAM_SKIP( 4 ) ) /* mbz */
|
||||
goto Exit;
|
||||
|
||||
if ( ref[j].res_id < 0 || temp < 0 )
|
||||
/*
|
||||
* According to Inside Macintosh: More Macintosh Toolbox,
|
||||
* "Resource IDs" (1-46), there are some reserved IDs.
|
||||
* However, FreeType2 is not a font synthesizer, no need
|
||||
* to check the acceptable resource ID.
|
||||
*/
|
||||
if ( temp < 0 )
|
||||
{
|
||||
error = FT_THROW( Invalid_Table );
|
||||
goto Exit;
|
||||
|
|
@ -281,7 +287,7 @@
|
|||
|
||||
FT_TRACE3(( " [%d]:"
|
||||
" resource_id=0x%04x, offset=0x%08x\n",
|
||||
j, ref[j].res_id, ref[j].offset ));
|
||||
j, (FT_UShort)ref[j].res_id, ref[j].offset ));
|
||||
}
|
||||
|
||||
if ( sort_by_res_id )
|
||||
|
|
@ -472,7 +478,7 @@
|
|||
}
|
||||
|
||||
|
||||
#ifndef FT_MACINTOSH
|
||||
#if defined( FT_CONFIG_OPTION_MAC_FONTS ) && !defined( FT_MACINTOSH )
|
||||
static FT_RFork_Rule
|
||||
raccess_get_rule_type_from_rule_index( FT_Library library,
|
||||
FT_UInt rule_index )
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
/* */
|
||||
/* This is _not_ used to retrieve glyph names! */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_INTERNAL_DEBUG_H
|
||||
|
||||
#include FT_SFNT_NAMES_H
|
||||
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
||||
#include FT_INTERNAL_STREAM_H
|
||||
|
|
@ -54,7 +56,7 @@
|
|||
|
||||
if ( idx < (FT_UInt)ttface->num_names )
|
||||
{
|
||||
TT_NameEntryRec* entry = ttface->name_table.names + idx;
|
||||
TT_Name entry = ttface->name_table.names + idx;
|
||||
|
||||
|
||||
/* load name on demand */
|
||||
|
|
@ -88,6 +90,58 @@
|
|||
}
|
||||
|
||||
|
||||
/* documentation is in ftsnames.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Get_Sfnt_LangTag( FT_Face face,
|
||||
FT_UInt langID,
|
||||
FT_SfntLangTag *alangTag )
|
||||
{
|
||||
FT_Error error = FT_ERR( Invalid_Argument );
|
||||
|
||||
|
||||
if ( alangTag && face && FT_IS_SFNT( face ) )
|
||||
{
|
||||
TT_Face ttface = (TT_Face)face;
|
||||
|
||||
|
||||
if ( ttface->name_table.format != 1 )
|
||||
return FT_THROW( Invalid_Table );
|
||||
|
||||
if ( langID > 0x8000U &&
|
||||
langID - 0x8000U < ttface->name_table.numLangTagRecords )
|
||||
{
|
||||
TT_LangTag entry = ttface->name_table.langTags +
|
||||
( langID - 0x8000U );
|
||||
|
||||
|
||||
/* load name on demand */
|
||||
if ( entry->stringLength > 0 && !entry->string )
|
||||
{
|
||||
FT_Memory memory = face->memory;
|
||||
FT_Stream stream = face->stream;
|
||||
|
||||
|
||||
if ( FT_NEW_ARRAY ( entry->string, entry->stringLength ) ||
|
||||
FT_STREAM_SEEK( entry->stringOffset ) ||
|
||||
FT_STREAM_READ( entry->string, entry->stringLength ) )
|
||||
{
|
||||
FT_FREE( entry->string );
|
||||
entry->stringLength = 0;
|
||||
}
|
||||
}
|
||||
|
||||
alangTag->string = (FT_Byte*)entry->string;
|
||||
alangTag->string_len = entry->stringLength;
|
||||
|
||||
error = FT_Err_Ok;
|
||||
}
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_SFNT_NAMES */
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* I/O stream support (body). */
|
||||
/* */
|
||||
/* Copyright 2000-2016 by */
|
||||
/* Copyright 2000-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType path stroker (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType synthesizing code for emboldening and slanting (body). */
|
||||
/* */
|
||||
/* Copyright 2000-2016 by */
|
||||
/* Copyright 2000-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -123,14 +123,14 @@
|
|||
|
||||
/*
|
||||
* XXX: overflow check for 16-bit system, for compatibility
|
||||
* with FT_GlyphSlot_Embolden() since freetype-2.1.10.
|
||||
* with FT_GlyphSlot_Embolden() since FreeType 2.1.10.
|
||||
* unfortunately, this function return no informations
|
||||
* about the cause of error.
|
||||
*/
|
||||
if ( ( ystr >> 6 ) > FT_INT_MAX || ( ystr >> 6 ) < FT_INT_MIN )
|
||||
{
|
||||
FT_TRACE1(( "FT_GlyphSlot_Embolden:" ));
|
||||
FT_TRACE1(( "too strong embolding parameter ystr=%d\n", ystr ));
|
||||
FT_TRACE1(( "too strong emboldening parameter ystr=%d\n", ystr ));
|
||||
return;
|
||||
}
|
||||
error = FT_GlyphSlot_Own_Bitmap( slot );
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* ANSI-specific FreeType low-level system interface (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Copyright 1996-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType trigonometric functions (body). */
|
||||
/* */
|
||||
/* Copyright 2001-2016 by */
|
||||
/* Copyright 2001-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType utility file for PS names support (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType utility file for memory and list management (body). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* Copyright 2002-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -135,7 +135,7 @@
|
|||
ft_mem_free( memory, block );
|
||||
block = NULL;
|
||||
}
|
||||
else if ( new_count > FT_INT_MAX/item_size )
|
||||
else if ( new_count > FT_INT_MAX / item_size )
|
||||
{
|
||||
error = FT_THROW( Array_Too_Large );
|
||||
}
|
||||
|
|
@ -143,13 +143,15 @@
|
|||
{
|
||||
FT_ASSERT( !block );
|
||||
|
||||
block = ft_mem_alloc( memory, new_count*item_size, &error );
|
||||
block = memory->alloc( memory, new_count * item_size );
|
||||
if ( block == NULL )
|
||||
error = FT_THROW( Out_Of_Memory );
|
||||
}
|
||||
else
|
||||
{
|
||||
FT_Pointer block2;
|
||||
FT_Long cur_size = cur_count*item_size;
|
||||
FT_Long new_size = new_count*item_size;
|
||||
FT_Long cur_size = cur_count * item_size;
|
||||
FT_Long new_size = new_count * item_size;
|
||||
|
||||
|
||||
block2 = memory->realloc( memory, cur_size, new_size, block );
|
||||
|
|
|
|||
61
modules/freetype2/src/base/ftver.rc
Normal file
61
modules/freetype2/src/base/ftver.rc
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftver.rc */
|
||||
/* */
|
||||
/* FreeType VERSIONINFO resource for Windows DLLs. */
|
||||
/* */
|
||||
/* Copyright 2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#include<windows.h>
|
||||
|
||||
#define FT_VERSION 2,9,1,0
|
||||
#define FT_VERSION_STR "2.9.1"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION FT_VERSION
|
||||
PRODUCTVERSION FT_VERSION
|
||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS VS_FF_DEBUG
|
||||
#endif
|
||||
#ifdef _DLL
|
||||
FILETYPE VFT_DLL
|
||||
#define FT_FILENAME "freetype.dll"
|
||||
#else
|
||||
FILETYPE VFT_STATIC_LIB
|
||||
#define FT_FILENAME "freetype.lib"
|
||||
#endif
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "The FreeType Project"
|
||||
VALUE "FileDescription", "Font Rendering Library"
|
||||
VALUE "FileVersion", FT_VERSION_STR
|
||||
VALUE "ProductName", "FreeType"
|
||||
VALUE "ProductVersion", FT_VERSION_STR
|
||||
VALUE "LegalCopyright", "\251 2018 The FreeType Project www.freetype.org. All rights reserved."
|
||||
VALUE "InternalName", "freetype"
|
||||
VALUE "OriginalFilename", FT_FILENAME
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
/* The following line should only be modified for localized versions. */
|
||||
/* It consists of any number of WORD,WORD pairs, with each pair */
|
||||
/* describing a "language,codepage" combination supported by the file. */
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType API for accessing Windows FNT specific info (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
|
||||
|
||||
# Copyright 1996-2016 by
|
||||
# Copyright 1996-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
@ -40,11 +40,14 @@ BASE_SRC := $(BASE_DIR)/basepic.c \
|
|||
$(BASE_DIR)/ftadvanc.c \
|
||||
$(BASE_DIR)/ftcalc.c \
|
||||
$(BASE_DIR)/ftdbgmem.c \
|
||||
$(BASE_DIR)/ftfntfmt.c \
|
||||
$(BASE_DIR)/ftgloadr.c \
|
||||
$(BASE_DIR)/fthash.c \
|
||||
$(BASE_DIR)/ftlcdfil.c \
|
||||
$(BASE_DIR)/ftobjs.c \
|
||||
$(BASE_DIR)/ftoutln.c \
|
||||
$(BASE_DIR)/ftpic.c \
|
||||
$(BASE_DIR)/ftpsprop.c \
|
||||
$(BASE_DIR)/ftrfork.c \
|
||||
$(BASE_DIR)/ftsnames.c \
|
||||
$(BASE_DIR)/ftstream.c \
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# FreeType 2 src/bdf Jamfile
|
||||
#
|
||||
# Copyright 2002-2016 by
|
||||
# Copyright 2002-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ This code implements a BDF driver for the FreeType library, following the
|
|||
Adobe Specification V 2.2. The specification of the BDF font format is
|
||||
available from Adobe's web site:
|
||||
|
||||
http://partners.adobe.com/public/developer/en/font/5005.BDF_Spec.pdf
|
||||
https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5005.BDF_Spec.pdf
|
||||
|
||||
Many good bitmap fonts in bdf format come with XFree86 (www.XFree86.org).
|
||||
They do not define vertical metrics, because the X Consortium BDF
|
||||
|
|
|
|||
|
|
@ -24,9 +24,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#define FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
|
||||
#define FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
#include <ft2build.h>
|
||||
|
||||
#include "bdflib.c"
|
||||
#include "bdfdrivr.c"
|
||||
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ THE SOFTWARE.
|
|||
/* we have a bdf font: let's construct the face object */
|
||||
face->bdffont = font;
|
||||
|
||||
/* BDF could not have multiple face in single font file.
|
||||
/* BDF cannot have multiple faces in a single font file.
|
||||
* XXX: non-zero face_index is already invalid argument, but
|
||||
* Type1, Type42 driver has a convention to return
|
||||
* an invalid argument error when the font could be
|
||||
|
|
@ -437,46 +437,156 @@ THE SOFTWARE.
|
|||
{
|
||||
FT_Bitmap_Size* bsize = bdfface->available_sizes;
|
||||
FT_Short resolution_x = 0, resolution_y = 0;
|
||||
long value;
|
||||
|
||||
|
||||
FT_ZERO( bsize );
|
||||
|
||||
/* sanity checks */
|
||||
if ( font->font_ascent > 0x7FFF || font->font_ascent < -0x7FFF )
|
||||
{
|
||||
font->font_ascent = font->font_ascent < 0 ? -0x7FFF : 0x7FFF;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping font ascent to value %d\n",
|
||||
font->font_ascent ));
|
||||
}
|
||||
if ( font->font_descent > 0x7FFF || font->font_descent < -0x7FFF )
|
||||
{
|
||||
font->font_descent = font->font_descent < 0 ? -0x7FFF : 0x7FFF;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping font descent to value %d\n",
|
||||
font->font_descent ));
|
||||
}
|
||||
|
||||
bsize->height = (FT_Short)( font->font_ascent + font->font_descent );
|
||||
|
||||
prop = bdf_get_font_property( font, "AVERAGE_WIDTH" );
|
||||
if ( prop )
|
||||
bsize->width = (FT_Short)( ( prop->value.l + 5 ) / 10 );
|
||||
{
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
if ( prop->value.l < 0 )
|
||||
FT_TRACE0(( "BDF_Face_Init: negative average width\n" ));
|
||||
#endif
|
||||
if ( prop->value.l > 0x7FFFL * 10 - 5 ||
|
||||
prop->value.l < -( 0x7FFFL * 10 - 5 ) )
|
||||
{
|
||||
bsize->width = 0x7FFF;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping average width to value %d\n",
|
||||
bsize->width ));
|
||||
}
|
||||
else
|
||||
bsize->width = FT_ABS( (FT_Short)( ( prop->value.l + 5 ) / 10 ) );
|
||||
}
|
||||
else
|
||||
bsize->width = (FT_Short)( bsize->height * 2/3 );
|
||||
{
|
||||
/* this is a heuristical value */
|
||||
bsize->width = (FT_Short)FT_MulDiv( bsize->height, 2, 3 );
|
||||
}
|
||||
|
||||
prop = bdf_get_font_property( font, "POINT_SIZE" );
|
||||
if ( prop )
|
||||
{
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
if ( prop->value.l < 0 )
|
||||
FT_TRACE0(( "BDF_Face_Init: negative point size\n" ));
|
||||
#endif
|
||||
/* convert from 722.7 decipoints to 72 points per inch */
|
||||
bsize->size =
|
||||
(FT_Pos)( ( prop->value.l * 64 * 7200 + 36135L ) / 72270L );
|
||||
if ( prop->value.l > 0x504C2L || /* 0x7FFF * 72270/7200 */
|
||||
prop->value.l < -0x504C2L )
|
||||
{
|
||||
bsize->size = 0x7FFF;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping point size to value %d\n",
|
||||
bsize->size ));
|
||||
}
|
||||
else
|
||||
bsize->size = FT_MulDiv( FT_ABS( prop->value.l ),
|
||||
64 * 7200,
|
||||
72270L );
|
||||
}
|
||||
else if ( font->point_size )
|
||||
{
|
||||
if ( font->point_size > 0x7FFF )
|
||||
{
|
||||
bsize->size = 0x7FFF;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping point size to value %d\n",
|
||||
bsize->size ));
|
||||
}
|
||||
else
|
||||
bsize->size = (FT_Pos)font->point_size << 6;
|
||||
}
|
||||
else
|
||||
bsize->size = bsize->width << 6;
|
||||
{
|
||||
/* this is a heuristical value */
|
||||
bsize->size = bsize->width * 64;
|
||||
}
|
||||
|
||||
prop = bdf_get_font_property( font, "PIXEL_SIZE" );
|
||||
if ( prop )
|
||||
bsize->y_ppem = (FT_Short)prop->value.l << 6;
|
||||
{
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
if ( prop->value.l < 0 )
|
||||
FT_TRACE0(( "BDF_Face_Init: negative pixel size\n" ));
|
||||
#endif
|
||||
if ( prop->value.l > 0x7FFF || prop->value.l < -0x7FFF )
|
||||
{
|
||||
bsize->y_ppem = 0x7FFF << 6;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping pixel size to value %d\n",
|
||||
bsize->y_ppem ));
|
||||
}
|
||||
else
|
||||
bsize->y_ppem = FT_ABS( (FT_Short)prop->value.l ) << 6;
|
||||
}
|
||||
|
||||
prop = bdf_get_font_property( font, "RESOLUTION_X" );
|
||||
if ( prop )
|
||||
resolution_x = (FT_Short)prop->value.l;
|
||||
value = prop->value.l;
|
||||
else
|
||||
value = (long)font->resolution_x;
|
||||
if ( value )
|
||||
{
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
if ( value < 0 )
|
||||
FT_TRACE0(( "BDF_Face_Init: negative X resolution\n" ));
|
||||
#endif
|
||||
if ( value > 0x7FFF || value < -0x7FFF )
|
||||
{
|
||||
resolution_x = 0x7FFF;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping X resolution to value %d\n",
|
||||
resolution_x ));
|
||||
}
|
||||
else
|
||||
resolution_x = FT_ABS( (FT_Short)value );
|
||||
}
|
||||
|
||||
prop = bdf_get_font_property( font, "RESOLUTION_Y" );
|
||||
if ( prop )
|
||||
resolution_y = (FT_Short)prop->value.l;
|
||||
value = prop->value.l;
|
||||
else
|
||||
value = (long)font->resolution_y;
|
||||
if ( value )
|
||||
{
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
if ( value < 0 )
|
||||
FT_TRACE0(( "BDF_Face_Init: negative Y resolution\n" ));
|
||||
#endif
|
||||
if ( value > 0x7FFF || value < -0x7FFF )
|
||||
{
|
||||
resolution_y = 0x7FFF;
|
||||
FT_TRACE0(( "BDF_Face_Init: clamping Y resolution to value %d\n",
|
||||
resolution_y ));
|
||||
}
|
||||
else
|
||||
resolution_y = FT_ABS( (FT_Short)value );
|
||||
}
|
||||
|
||||
if ( bsize->y_ppem == 0 )
|
||||
{
|
||||
bsize->y_ppem = bsize->size;
|
||||
if ( resolution_y )
|
||||
bsize->y_ppem = bsize->y_ppem * resolution_y / 72;
|
||||
bsize->y_ppem = FT_MulDiv( bsize->y_ppem, resolution_y, 72 );
|
||||
}
|
||||
if ( resolution_x && resolution_y )
|
||||
bsize->x_ppem = bsize->y_ppem * resolution_x / resolution_y;
|
||||
bsize->x_ppem = FT_MulDiv( bsize->y_ppem,
|
||||
resolution_x,
|
||||
resolution_y );
|
||||
else
|
||||
bsize->x_ppem = bsize->y_ppem;
|
||||
}
|
||||
|
|
@ -545,7 +655,11 @@ THE SOFTWARE.
|
|||
if ( !ft_strcmp( s, "10646" ) ||
|
||||
( !ft_strcmp( s, "8859" ) &&
|
||||
!ft_strcmp( face->charset_encoding, "1" ) ) )
|
||||
unicode_charmap = 1;
|
||||
unicode_charmap = 1;
|
||||
/* another name for ASCII */
|
||||
else if ( !ft_strcmp( s, "646.1991" ) &&
|
||||
!ft_strcmp( face->charset_encoding, "IRV" ) )
|
||||
unicode_charmap = 1;
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -566,12 +680,6 @@ THE SOFTWARE.
|
|||
}
|
||||
|
||||
error = FT_CMap_New( &bdf_cmap_class, NULL, &charmap, NULL );
|
||||
|
||||
#if 0
|
||||
/* Select default charmap */
|
||||
if ( bdfface->num_charmaps )
|
||||
bdfface->charmap = bdfface->charmaps[0];
|
||||
#endif
|
||||
}
|
||||
|
||||
goto Exit;
|
||||
|
|
@ -705,7 +813,7 @@ THE SOFTWARE.
|
|||
|
||||
bitmap->rows = glyph.bbx.height;
|
||||
bitmap->width = glyph.bbx.width;
|
||||
if ( glyph.bpr > INT_MAX )
|
||||
if ( glyph.bpr > FT_INT_MAX )
|
||||
FT_TRACE1(( "BDF_Glyph_Load: too large pitch %d is truncated\n",
|
||||
glyph.bpr ));
|
||||
bitmap->pitch = (int)glyph.bpr; /* same as FT_Bitmap.pitch */
|
||||
|
|
|
|||
|
|
@ -704,7 +704,15 @@
|
|||
return 0;
|
||||
|
||||
for ( v = 0; sbitset( ddigits, *s ); s++ )
|
||||
v = v * 10 + a2i[(int)*s];
|
||||
{
|
||||
if ( v < ( FT_ULONG_MAX - 9 ) / 10 )
|
||||
v = v * 10 + a2i[(int)*s];
|
||||
else
|
||||
{
|
||||
v = FT_ULONG_MAX;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
|
@ -729,7 +737,15 @@
|
|||
}
|
||||
|
||||
for ( v = 0; sbitset( ddigits, *s ); s++ )
|
||||
v = v * 10 + a2i[(int)*s];
|
||||
{
|
||||
if ( v < ( FT_LONG_MAX - 9 ) / 10 )
|
||||
v = v * 10 + a2i[(int)*s];
|
||||
else
|
||||
{
|
||||
v = FT_LONG_MAX;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ( !neg ) ? v : -v;
|
||||
}
|
||||
|
|
@ -746,7 +762,15 @@
|
|||
return 0;
|
||||
|
||||
for ( v = 0; sbitset( ddigits, *s ); s++ )
|
||||
v = (unsigned short)( v * 10 + a2i[(int)*s] );
|
||||
{
|
||||
if ( v < ( FT_USHORT_MAX - 9 ) / 10 )
|
||||
v = (unsigned short)( v * 10 + a2i[(int)*s] );
|
||||
else
|
||||
{
|
||||
v = FT_USHORT_MAX;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
|
@ -771,7 +795,15 @@
|
|||
}
|
||||
|
||||
for ( v = 0; sbitset( ddigits, *s ); s++ )
|
||||
v = (short)( v * 10 + a2i[(int)*s] );
|
||||
{
|
||||
if ( v < ( SHRT_MAX - 9 ) / 10 )
|
||||
v = (short)( v * 10 + a2i[(int)*s] );
|
||||
else
|
||||
{
|
||||
v = SHRT_MAX;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (short)( ( !neg ) ? v : -v );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# FreeType 2 src/bzip2 Jamfile
|
||||
#
|
||||
# Copyright 2010-2016 by
|
||||
# Copyright 2010-2018 by
|
||||
# Joel Klinghed
|
||||
#
|
||||
# based on `src/lzw/Jamfile'
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
/* parse compressed PCF fonts, as found with many X11 server */
|
||||
/* distributions. */
|
||||
/* */
|
||||
/* Copyright 2010-2016 by */
|
||||
/* Copyright 2010-2018 by */
|
||||
/* Joel Klinghed. */
|
||||
/* */
|
||||
/* based on `src/gzip/ftgzip.c' */
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# FreeType 2 BZIP2 support configuration rules
|
||||
#
|
||||
|
||||
# Copyright 2010-2016 by
|
||||
# Copyright 2010-2018 by
|
||||
# Joel Klinghed.
|
||||
#
|
||||
# based on `src/lzw/rules.mk'
|
||||
|
|
|
|||
2
modules/freetype2/src/cache/Jamfile
vendored
2
modules/freetype2/src/cache/Jamfile
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# FreeType 2 src/cache Jamfile
|
||||
#
|
||||
# Copyright 2001-2016 by
|
||||
# Copyright 2001-2018 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
|
|
|||
11
modules/freetype2/src/cache/ftcache.c
vendored
11
modules/freetype2/src/cache/ftcache.c
vendored
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType Caching sub-system (body only). */
|
||||
/* */
|
||||
/* Copyright 2000-2016 by */
|
||||
/* Copyright 2000-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -17,15 +17,16 @@
|
|||
|
||||
|
||||
#define FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
|
||||
#include <ft2build.h>
|
||||
#include "ftcmru.c"
|
||||
#include "ftcmanag.c"
|
||||
|
||||
#include "ftcbasic.c"
|
||||
#include "ftccache.c"
|
||||
#include "ftccmap.c"
|
||||
#include "ftcglyph.c"
|
||||
#include "ftcimage.c"
|
||||
#include "ftcmanag.c"
|
||||
#include "ftcmru.c"
|
||||
#include "ftcsbits.c"
|
||||
#include "ftcbasic.c"
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
|
|||
40
modules/freetype2/src/cache/ftcbasic.c
vendored
40
modules/freetype2/src/cache/ftcbasic.c
vendored
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType basic cache interface (body). */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* Copyright 2003-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
@ -304,10 +304,18 @@
|
|||
if ( anode )
|
||||
*anode = NULL;
|
||||
|
||||
if ( (FT_ULong)( type->flags - FT_INT_MIN ) > FT_UINT_MAX )
|
||||
/*
|
||||
* Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
|
||||
* but public `FT_ImageType->flags' is of type `FT_Int32'.
|
||||
*
|
||||
* On 16bit systems, higher bits of type->flags cannot be handled.
|
||||
*/
|
||||
#if 0xFFFFFFFFUL > FT_UINT_MAX
|
||||
if ( (type->flags & (FT_ULong)FT_UINT_MAX) )
|
||||
FT_TRACE1(( "FTC_ImageCache_Lookup:"
|
||||
" higher bits in load_flags 0x%x are dropped\n",
|
||||
(FT_ULong)type->flags & ~((FT_ULong)FT_UINT_MAX) ));
|
||||
#endif
|
||||
|
||||
query.attrs.scaler.face_id = type->face_id;
|
||||
query.attrs.scaler.width = type->width;
|
||||
|
|
@ -377,11 +385,18 @@
|
|||
if ( anode )
|
||||
*anode = NULL;
|
||||
|
||||
/* `FT_Load_Glyph' and `FT_Load_Char' take FT_UInt flags */
|
||||
/*
|
||||
* Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
|
||||
* but public `FT_Face->face_flags' is of type `FT_Long'.
|
||||
*
|
||||
* On long > int systems, higher bits of load_flags cannot be handled.
|
||||
*/
|
||||
#if FT_ULONG_MAX > FT_UINT_MAX
|
||||
if ( load_flags > FT_UINT_MAX )
|
||||
FT_TRACE1(( "FTC_ImageCache_LookupScaler:"
|
||||
" higher bits in load_flags 0x%x are dropped\n",
|
||||
load_flags & ~((FT_ULong)FT_UINT_MAX) ));
|
||||
#endif
|
||||
|
||||
query.attrs.scaler = scaler[0];
|
||||
query.attrs.load_flags = (FT_UInt)load_flags;
|
||||
|
|
@ -487,10 +502,18 @@
|
|||
|
||||
*ansbit = NULL;
|
||||
|
||||
if ( (FT_ULong)( type->flags - FT_INT_MIN ) > FT_UINT_MAX )
|
||||
/*
|
||||
* Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
|
||||
* but public `FT_ImageType->flags' is of type `FT_Int32'.
|
||||
*
|
||||
* On 16bit systems, higher bits of type->flags cannot be handled.
|
||||
*/
|
||||
#if 0xFFFFFFFFUL > FT_UINT_MAX
|
||||
if ( (type->flags & (FT_ULong)FT_UINT_MAX) )
|
||||
FT_TRACE1(( "FTC_ImageCache_Lookup:"
|
||||
" higher bits in load_flags 0x%x are dropped\n",
|
||||
(FT_ULong)type->flags & ~((FT_ULong)FT_UINT_MAX) ));
|
||||
#endif
|
||||
|
||||
query.attrs.scaler.face_id = type->face_id;
|
||||
query.attrs.scaler.width = type->width;
|
||||
|
|
@ -562,11 +585,18 @@
|
|||
|
||||
*ansbit = NULL;
|
||||
|
||||
/* `FT_Load_Glyph' and `FT_Load_Char' take FT_UInt flags */
|
||||
/*
|
||||
* Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
|
||||
* but public `FT_Face->face_flags' is of type `FT_Long'.
|
||||
*
|
||||
* On long > int systems, higher bits of load_flags cannot be handled.
|
||||
*/
|
||||
#if FT_ULONG_MAX > FT_UINT_MAX
|
||||
if ( load_flags > FT_UINT_MAX )
|
||||
FT_TRACE1(( "FTC_ImageCache_LookupScaler:"
|
||||
" higher bits in load_flags 0x%x are dropped\n",
|
||||
load_flags & ~((FT_ULong)FT_UINT_MAX) ));
|
||||
#endif
|
||||
|
||||
query.attrs.scaler = scaler[0];
|
||||
query.attrs.load_flags = (FT_UInt)load_flags;
|
||||
|
|
|
|||
2
modules/freetype2/src/cache/ftccache.c
vendored
2
modules/freetype2/src/cache/ftccache.c
vendored
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType internal cache interface (body). */
|
||||
/* */
|
||||
/* Copyright 2000-2016 by */
|
||||
/* Copyright 2000-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
2
modules/freetype2/src/cache/ftccache.h
vendored
2
modules/freetype2/src/cache/ftccache.h
vendored
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType internal cache interface (specification). */
|
||||
/* */
|
||||
/* Copyright 2000-2016 by */
|
||||
/* Copyright 2000-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
2
modules/freetype2/src/cache/ftccback.h
vendored
2
modules/freetype2/src/cache/ftccback.h
vendored
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Callback functions of the caching sub-system (specification only). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* Copyright 2004-2018 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue