ttf-рдкрд╛рд░реНрд╕рд░ 0.5 - TrueType рдлреЙрдиреНрдЯрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдирд╡реАрди рд▓рд╛рдпрдмреНрд░рд░реА

ttf-рдкрд╛рд░реНрд╕рд░ TrueType/OpenType рдлреЙрдиреНрдЯ рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд▓рд╛рдпрдмреНрд░рд░реА рдЖрд╣реЗ.
рдирд╡реАрди рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдлреЙрдиреНрдЯрд╕рд╛рдареА рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдЖрд╣реЗ
(рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдлреЙрдиреНрдЯ) рдЖрдгрд┐ C API, рдЬреНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдгреВрди рдореА рддреНрдпрд╛рдЪреА рдЬрд╛рд╣рд┐рд░рд╛рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ рдЖрд╣реЗ.

рдЕрд▓реАрдХрдбреЗ рдкрд░реНрдпрдВрдд, рдЬрд░ рдЯреНрд░реВрдЯрд╛рдЗрдк рдлреЙрдиреНрдЯрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓, рддрд░ рддреЗрдереЗ рджреЛрди рдкрд░реНрдпрд╛рдп рд╣реЛрддреЗ: FreeType рдЖрдгрд┐ stb_truetype. рдкрд╣рд┐рд▓реЗ рдПрдХ рдкреНрд░рдЪрдВрдб рд╕рдВрдпреЛрдЬрди рдЖрд╣реЗ, рджреБрд╕рд░реЗ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреНрдпрд╛ рдЕрдЧрджреА рдХрдореА рд╕рдВрдЦреНрдпреЗрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ.

ttf-рдкрд╛рд░реНрд╕рд░ рдордзреНрдпрднрд╛рдЧреА рдХреБрдареЗрддрд░реА рдЖрд╣реЗ. рд╣реЗ рдлреНрд░реАрдЯрд╛рдЗрдк рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд░реНрд╡ рд╕рдорд╛рди рдЯреНрд░реВрдЯрд╛рдЗрдк рд╕рд╛рд░рдгреНрдпрд╛рдВрдирд╛ (рдЯреНрд░реВрдЯрд╛рдЗрдк рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдЕрдиреЗрдХ рд╕реНрд╡рддрдВрддреНрд░ рдмрд╛рдпрдирд░реА рдЯреЗрдмрд▓реНрд╕ рдЕрд╕рддрд╛рдд) рд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ, рдкрд░рдВрддреБ рд╕реНрд╡рддрдГ рдЧреНрд▓рд┐рдлреНрд╕ рдХрд╛рдврдд рдирд╛рд╣реА.

рддреНрдпрд╛рдЪ рд╡реЗрд│реА, ttf-рдкрд╛рд░реНрд╕рд░рдордзреНрдпреЗ рдЗрддрд░ рдЕрдиреЗрдХ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдлрд░рдХ рдЖрд╣реЗрдд:

  1. ttf-parser рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рди рд╡рд╛рдкрд░рддрд╛ Rust рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗ рдЖрд╣реЗ. FreeType рдЖрдгрд┐ stb_truetype C рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗрдд.
  2. ttf-рдкрд╛рд░реНрд╕рд░ рд╣реЗ рдПрдХрдореЗрд╡ рдореЗрдорд░реА-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ. рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореЗрдорд░реА рд╡рд╛рдЪрдгреЗ рд╢рдХреНрдп рдирд╛рд╣реА. FreeType рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛ рд╕рддрдд рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдд рдЖрд╣реЗрдд рдЖрдгрд┐ stb_truetype рд╣реЗ рддрддреНрд╡рддрдГ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдлреЙрдиреНрдЯ рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реА.
  3. ttf-рдкрд╛рд░реНрд╕рд░ рд╣реЗ рдПрдХрдореЗрд╡ рдереНрд░реЗрдб-рд╕реЗрдл рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ. рд╕рд░реНрд╡ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкрджреНрдзрддреА рд╕реНрдерд┐рд░ рдЖрд╣реЗрдд. рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдлреЙрдиреНрдЯрд╕рд╛рдареА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░рдгреЗ рд╣рд╛ рдПрдХрдореЗрд╡ рдЕрдкрд╡рд╛рдж рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╣реЗ рдлрдВрдХреНрд╢рди рд░реАрдПрдВрдЯреНрд░рдВрдЯ рдЖрд╣реЗ. рдлреНрд░реАрдЯрд╛рдЗрдк рдореБрд│рд╛рдд рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдЖрд╣реЗ. stb_truetype - рд░реАрдПрдВрдЯреНрд░рдВрдЯ (рддреБрдореНрд╣реА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдереНрд░реЗрдбрдордзреНрдпреЗ рд╡реИрдпрдХреНрддрд┐рдХ рдкреНрд░рддреА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рдЕрдиреЗрдХрд╛рдВрдкреИрдХреА рдПрдХ рдирд╛рд╣реА).
  4. ttf-рдкрд╛рд░реНрд╕рд░ рд╣реЗ рдПрдХрдореЗрд╡ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ рдЬреЗ рд╣реАрдк рдНрд▓реЛрдХреЗрд╢рди рд╡рд╛рдкрд░рдд рдирд╛рд╣реА. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧрдЪреА рдЧрддреА рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕ рдЖрдгрд┐ OOM рд╕рд╣ рд╕рдорд╕реНрдпрд╛ рдЯрд╛рд│рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
  5. рддрд╕реЗрдЪ, рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдЕрдВрдХрдЧрдгрд┐рдд рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрдгрд┐ рдЕрдВрдХреАрдп рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреА рд░реВрдкрд╛рдВрддрд░рдгреЗ рддрдкрд╛рд╕рд▓реА рдЬрд╛рддрд╛рдд (рд╕реНрдерд┐рд░рддреЗрд╕рд╣).
  6. рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рд▓рд╛рдпрдмреНрд░рд░реА рдЕрдкрд╡рд╛рдж рдХрд░реВ рд╢рдХрддреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, C API рдордзреНрдпреЗ, рдЕрдкрд╡рд╛рдж рдкрдХрдбрд▓реЗ рдЬрд╛рддреАрд▓ рдЖрдгрд┐ рдлрдВрдХреНрд╢рди рддреНрд░реБрдЯреА рджреЗрдИрд▓, рдкрд░рдВрддреБ рдХреНрд░реЕрд╢ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА.

рдЖрдгрд┐ рд╕рд░реНрд╡ рд╕реБрд░рдХреНрд╖рд╛ рд╣рдореА рдЕрд╕реВрдирд╣реА, ttf-parser рджреЗрдЦреАрд▓ рд╕рд░реНрд╡рд╛рдд рдЬрд▓рдж рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, CFF2 рдкрд╛рд░реНрд╕ рдХрд░рдгреЗ FreeType рдкреЗрдХреНрд╖рд╛ 3.5 рдкрдЯ рдЬрд▓рдж рдЖрд╣реЗ. рджрд░рдореНрдпрд╛рди, glyf рдЪреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ stb_truetype рдкреЗрдХреНрд╖рд╛ 10% рд╣рд│реВ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╣реЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдлреЙрдиреНрдЯрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реА рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдорд╛рд╣рд┐рддреА рдордзреНрдпреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдорд▓рд╛ рд╡рд╛рдЪрд╛.

рд╕реНрддреНрд░реЛрдд: linux.org.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛