Update the links and revive the dead ones
This commit is contained in:
parent
a02c3ee70f
commit
f24b0b9728
|
@ -412,7 +412,7 @@ hb_script_from_iso15924_tag (hb_tag_t tag)
|
||||||
case HB_TAG('Q','a','a','i'): return HB_SCRIPT_INHERITED;
|
case HB_TAG('Q','a','a','i'): return HB_SCRIPT_INHERITED;
|
||||||
case HB_TAG('Q','a','a','c'): return HB_SCRIPT_COPTIC;
|
case HB_TAG('Q','a','a','c'): return HB_SCRIPT_COPTIC;
|
||||||
|
|
||||||
/* Script variants from http://unicode.org/iso15924/ */
|
/* Script variants from https://unicode.org/iso15924/ */
|
||||||
case HB_TAG('C','y','r','s'): return HB_SCRIPT_CYRILLIC;
|
case HB_TAG('C','y','r','s'): return HB_SCRIPT_CYRILLIC;
|
||||||
case HB_TAG('L','a','t','f'): return HB_SCRIPT_LATIN;
|
case HB_TAG('L','a','t','f'): return HB_SCRIPT_LATIN;
|
||||||
case HB_TAG('L','a','t','g'): return HB_SCRIPT_LATIN;
|
case HB_TAG('L','a','t','g'): return HB_SCRIPT_LATIN;
|
||||||
|
@ -480,7 +480,7 @@ hb_script_to_iso15924_tag (hb_script_t script)
|
||||||
hb_direction_t
|
hb_direction_t
|
||||||
hb_script_get_horizontal_direction (hb_script_t script)
|
hb_script_get_horizontal_direction (hb_script_t script)
|
||||||
{
|
{
|
||||||
/* http://goo.gl/x9ilM */
|
/* https://docs.google.com/spreadsheets/d/1Y90M0Ie3MUJ6UVCRDOypOtijlMDLNNyyLk36T6iMu0o */
|
||||||
switch ((hb_tag_t) script)
|
switch ((hb_tag_t) script)
|
||||||
{
|
{
|
||||||
/* Unicode-1.1 additions */
|
/* Unicode-1.1 additions */
|
||||||
|
|
|
@ -142,8 +142,8 @@ hb_language_get_default (void);
|
||||||
|
|
||||||
/* hb_script_t */
|
/* hb_script_t */
|
||||||
|
|
||||||
/* http://unicode.org/iso15924/ */
|
/* https://unicode.org/iso15924/ */
|
||||||
/* http://goo.gl/x9ilM */
|
/* https://docs.google.com/spreadsheets/d/1Y90M0Ie3MUJ6UVCRDOypOtijlMDLNNyyLk36T6iMu0o */
|
||||||
/* Unicode Character Database property: Script (sc) */
|
/* Unicode Character Database property: Script (sc) */
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -323,7 +323,7 @@ typedef enum
|
||||||
* since technically enums are int, and indeed, hb_script_t ends up being signed.
|
* since technically enums are int, and indeed, hb_script_t ends up being signed.
|
||||||
* See this thread for technicalities:
|
* See this thread for technicalities:
|
||||||
*
|
*
|
||||||
* http://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html
|
* https://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html
|
||||||
*/
|
*/
|
||||||
_HB_SCRIPT_MAX_VALUE = HB_TAG_MAX, /*< skip >*/
|
_HB_SCRIPT_MAX_VALUE = HB_TAG_MAX, /*< skip >*/
|
||||||
_HB_SCRIPT_MAX_VALUE_SIGNED = HB_TAG_MAX_SIGNED /*< skip >*/
|
_HB_SCRIPT_MAX_VALUE_SIGNED = HB_TAG_MAX_SIGNED /*< skip >*/
|
||||||
|
|
|
@ -1005,7 +1005,7 @@ resize_and_retry:
|
||||||
/* For right-to-left runs, CoreText returns the glyphs positioned such that
|
/* For right-to-left runs, CoreText returns the glyphs positioned such that
|
||||||
* any trailing whitespace is to the left of (0,0). Adjust coordinate system
|
* any trailing whitespace is to the left of (0,0). Adjust coordinate system
|
||||||
* to fix for that. Test with any RTL string with trailing spaces.
|
* to fix for that. Test with any RTL string with trailing spaces.
|
||||||
* https://code.google.com/p/chromium/issues/detail?id=469028
|
* https://crbug.com/469028
|
||||||
*/
|
*/
|
||||||
if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
|
if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
|
||||||
{
|
{
|
||||||
|
@ -1058,7 +1058,7 @@ resize_and_retry:
|
||||||
* However, even that wouldn't work if we were passed in the CGFont to
|
* However, even that wouldn't work if we were passed in the CGFont to
|
||||||
* construct a hb_face to begin with.
|
* construct a hb_face to begin with.
|
||||||
*
|
*
|
||||||
* See: http://github.com/harfbuzz/harfbuzz/pull/36
|
* See: https://github.com/harfbuzz/harfbuzz/pull/36
|
||||||
*
|
*
|
||||||
* Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098
|
* Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098
|
||||||
*/
|
*/
|
||||||
|
@ -1248,7 +1248,7 @@ resize_and_retry:
|
||||||
* directions. As such, disable the assert... It wouldn't crash, but
|
* directions. As such, disable the assert... It wouldn't crash, but
|
||||||
* cursoring will be off...
|
* cursoring will be off...
|
||||||
*
|
*
|
||||||
* http://crbug.com/419769
|
* https://crbug.com/419769
|
||||||
*/
|
*/
|
||||||
if (0)
|
if (0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -177,7 +177,7 @@ hb_ft_get_nominal_glyph (hb_font_t *font HB_UNUSED,
|
||||||
/* For symbol-encoded OpenType fonts, we duplicate the
|
/* For symbol-encoded OpenType fonts, we duplicate the
|
||||||
* U+F000..F0FF range at U+0000..U+00FF. That's what
|
* U+F000..F0FF range at U+0000..U+00FF. That's what
|
||||||
* Windows seems to do, and that's hinted about at:
|
* Windows seems to do, and that's hinted about at:
|
||||||
* http://www.microsoft.com/typography/otspec/recom.htm
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/recom
|
||||||
* under "Non-Standard (Symbol) Fonts". */
|
* under "Non-Standard (Symbol) Fonts". */
|
||||||
g = FT_Get_Char_Index (ft_font->ft_face, 0xF000u + unicode);
|
g = FT_Get_Char_Index (ft_font->ft_face, 0xF000u + unicode);
|
||||||
if (!g)
|
if (!g)
|
||||||
|
|
|
@ -30,16 +30,16 @@
|
||||||
#include "hb-open-type-private.hh"
|
#include "hb-open-type-private.hh"
|
||||||
#include "hb-subset-plan.hh"
|
#include "hb-subset-plan.hh"
|
||||||
|
|
||||||
namespace OT {
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cmap -- Character To Glyph Index Mapping Table
|
* cmap -- Character to Glyph Index Mapping
|
||||||
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/cmap
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define HB_OT_TAG_cmap HB_TAG('c','m','a','p')
|
#define HB_OT_TAG_cmap HB_TAG('c','m','a','p')
|
||||||
|
|
||||||
|
|
||||||
|
namespace OT {
|
||||||
|
|
||||||
|
|
||||||
struct CmapSubtableFormat0
|
struct CmapSubtableFormat0
|
||||||
{
|
{
|
||||||
inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const
|
inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const
|
||||||
|
@ -738,7 +738,7 @@ struct cmap
|
||||||
/* For symbol-encoded OpenType fonts, we duplicate the
|
/* For symbol-encoded OpenType fonts, we duplicate the
|
||||||
* U+F000..F0FF range at U+0000..U+00FF. That's what
|
* U+F000..F0FF range at U+0000..U+00FF. That's what
|
||||||
* Windows seems to do, and that's hinted about at:
|
* Windows seems to do, and that's hinted about at:
|
||||||
* http://www.microsoft.com/typography/otspec/recom.htm
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/recom
|
||||||
* under "Non-Standard (Symbol) Fonts". */
|
* under "Non-Standard (Symbol) Fonts". */
|
||||||
return typed_obj->get_glyph (0xF000u + codepoint, glyph);
|
return typed_obj->get_glyph (0xF000u + codepoint, glyph);
|
||||||
}
|
}
|
||||||
|
|
|
@ -270,7 +270,7 @@ struct Script
|
||||||
typedef RecordListOf<Script> ScriptList;
|
typedef RecordListOf<Script> ScriptList;
|
||||||
|
|
||||||
|
|
||||||
/* http://www.microsoft.com/typography/otspec/features_pt.htm#size */
|
/* https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#size */
|
||||||
struct FeatureParamsSize
|
struct FeatureParamsSize
|
||||||
{
|
{
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
|
@ -292,7 +292,7 @@ struct FeatureParamsSize
|
||||||
*
|
*
|
||||||
* The specification for this feature tag is in the "OpenType Layout Tag
|
* The specification for this feature tag is in the "OpenType Layout Tag
|
||||||
* Registry". You can see a copy of this at:
|
* Registry". You can see a copy of this at:
|
||||||
* http://partners.adobe.com/public/developer/opentype/index_tag8.html#size
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-size
|
||||||
*
|
*
|
||||||
* Here is one set of rules to determine if the 'size' feature is built
|
* Here is one set of rules to determine if the 'size' feature is built
|
||||||
* correctly, or as by the older versions of MakeOTF. You may be able to do
|
* correctly, or as by the older versions of MakeOTF. You may be able to do
|
||||||
|
@ -382,7 +382,7 @@ struct FeatureParamsSize
|
||||||
DEFINE_SIZE_STATIC (10);
|
DEFINE_SIZE_STATIC (10);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* http://www.microsoft.com/typography/otspec/features_pt.htm#ssxx */
|
/* https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#ssxx */
|
||||||
struct FeatureParamsStylisticSet
|
struct FeatureParamsStylisticSet
|
||||||
{
|
{
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
|
@ -416,7 +416,7 @@ struct FeatureParamsStylisticSet
|
||||||
DEFINE_SIZE_STATIC (4);
|
DEFINE_SIZE_STATIC (4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* http://www.microsoft.com/typography/otspec/features_ae.htm#cv01-cv99 */
|
/* https://docs.microsoft.com/en-us/typography/opentype/spec/features_ae#cv01-cv99 */
|
||||||
struct FeatureParamsCharacterVariants
|
struct FeatureParamsCharacterVariants
|
||||||
{
|
{
|
||||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||||
|
|
|
@ -309,7 +309,7 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
|
||||||
* processing on. */
|
* processing on. */
|
||||||
|
|
||||||
/* Only Mn and Mc can have non-zero ccc:
|
/* Only Mn and Mc can have non-zero ccc:
|
||||||
* http://www.unicode.org/policies/stability_policy.html#Property_Value
|
* https://unicode.org/policies/stability_policy.html#Property_Value
|
||||||
* """
|
* """
|
||||||
* Canonical_Combining_Class, General_Category
|
* Canonical_Combining_Class, General_Category
|
||||||
* All characters other than those with General_Category property values
|
* All characters other than those with General_Category property values
|
||||||
|
|
|
@ -307,7 +307,7 @@ Xhb_ot_layout_lookup_position (hb_font_t *font,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Optical 'size' feature info. Returns true if found.
|
/* Optical 'size' feature info. Returns true if found.
|
||||||
* http://www.microsoft.com/typography/otspec/features_pt.htm#size */
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#size */
|
||||||
HB_EXTERN hb_bool_t
|
HB_EXTERN hb_bool_t
|
||||||
hb_ot_layout_get_size_params (hb_face_t *face,
|
hb_ot_layout_get_size_params (hb_face_t *face,
|
||||||
unsigned int *design_size, /* OUT. May be NULL */
|
unsigned int *design_size, /* OUT. May be NULL */
|
||||||
|
|
|
@ -421,7 +421,7 @@ retry:
|
||||||
/*
|
/*
|
||||||
* Stretch feature: "stch".
|
* Stretch feature: "stch".
|
||||||
* See example here:
|
* See example here:
|
||||||
* https://www.microsoft.com/typography/OpenTypeDev/syriac/intro.htm
|
* https://docs.microsoft.com/en-us/typography/script-development/syriac
|
||||||
* We implement this in a generic way, such that the Arabic subtending
|
* We implement this in a generic way, such that the Arabic subtending
|
||||||
* marks can use it as well.
|
* marks can use it as well.
|
||||||
*/
|
*/
|
||||||
|
@ -611,7 +611,7 @@ postprocess_glyphs_arabic (const hb_ot_shape_plan_t *plan,
|
||||||
HB_BUFFER_DEALLOCATE_VAR (buffer, arabic_shaping_action);
|
HB_BUFFER_DEALLOCATE_VAR (buffer, arabic_shaping_action);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* http://www.unicode.org/reports/tr53/tr53-1.pdf */
|
/* https://unicode.org/reports/tr53/tr53-1.pdf */
|
||||||
|
|
||||||
static hb_codepoint_t
|
static hb_codepoint_t
|
||||||
modifier_combining_marks[] =
|
modifier_combining_marks[] =
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
#define INDIC_TABLE_ELEMENT_TYPE uint16_t
|
#define INDIC_TABLE_ELEMENT_TYPE uint16_t
|
||||||
|
|
||||||
/* Cateories used in the OpenType spec:
|
/* Cateories used in the OpenType spec:
|
||||||
* https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx
|
* https://docs.microsoft.com/en-us/typography/script-development/devanagari
|
||||||
*/
|
*/
|
||||||
/* Note: This enum is duplicated in the -machine.rl source file.
|
/* Note: This enum is duplicated in the -machine.rl source file.
|
||||||
* Not sure how to avoid duplication. */
|
* Not sure how to avoid duplication. */
|
||||||
|
|
|
@ -435,7 +435,7 @@ update_consonant_positions (const hb_ot_shape_plan_t *plan,
|
||||||
|
|
||||||
|
|
||||||
/* Rules from:
|
/* Rules from:
|
||||||
* https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx */
|
* https://docs.microsqoft.com/en-us/typography/script-development/devanagari */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
||||||
|
@ -1512,7 +1512,7 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c,
|
||||||
* The Uniscribe behavior is now documented in the newly published Sinhala
|
* The Uniscribe behavior is now documented in the newly published Sinhala
|
||||||
* spec in 2012:
|
* spec in 2012:
|
||||||
*
|
*
|
||||||
* http://www.microsoft.com/typography/OpenTypeDev/sinhala/intro.htm#shaping
|
* https://docs.microsoft.com/en-us/typography/script-development/sinhala#shaping
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) c->plan->data;
|
const indic_shape_plan_t *indic_plan = (const indic_shape_plan_t *) c->plan->data;
|
||||||
|
|
|
@ -275,7 +275,7 @@ compare_khmer_order (const hb_glyph_info_t *pa, const hb_glyph_info_t *pb)
|
||||||
|
|
||||||
|
|
||||||
/* Rules from:
|
/* Rules from:
|
||||||
* https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx */
|
* https://docs.microsoft.com/en-us/typography/script-development/devanagari */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
||||||
|
|
|
@ -68,7 +68,7 @@ set_myanmar_properties (hb_glyph_info_t &info)
|
||||||
indic_position_t pos = (indic_position_t) (type >> 8);
|
indic_position_t pos = (indic_position_t) (type >> 8);
|
||||||
|
|
||||||
/* Myanmar
|
/* Myanmar
|
||||||
* http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm#analyze
|
* https://docs.microsoft.com/en-us/typography/script-development/myanmar#analyze
|
||||||
*/
|
*/
|
||||||
if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xFE00u, 0xFE0Fu)))
|
if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xFE00u, 0xFE0Fu)))
|
||||||
cat = (indic_category_t) OT_VS;
|
cat = (indic_category_t) OT_VS;
|
||||||
|
|
|
@ -161,7 +161,7 @@ compare_myanmar_order (const hb_glyph_info_t *pa, const hb_glyph_info_t *pb)
|
||||||
|
|
||||||
|
|
||||||
/* Rules from:
|
/* Rules from:
|
||||||
* http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm */
|
* https://docs.microsoft.com/en-us/typography/script-development/myanmar */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
initial_reordering_consonant_syllable (hb_buffer_t *buffer,
|
initial_reordering_consonant_syllable (hb_buffer_t *buffer,
|
||||||
|
|
|
@ -260,7 +260,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
|
||||||
{
|
{
|
||||||
/* This function implements the shaping logic documented here:
|
/* This function implements the shaping logic documented here:
|
||||||
*
|
*
|
||||||
* http://linux.thai.net/~thep/th-otf/shaping.html
|
* https://linux.thai.net/~thep/th-otf/shaping.html
|
||||||
*
|
*
|
||||||
* The first shaping rule listed there is needed even if the font has Thai
|
* The first shaping rule listed there is needed even if the font has Thai
|
||||||
* OpenType tables. The rest do fallback positioning based on PUA codepoints.
|
* OpenType tables. The rest do fallback positioning based on PUA codepoints.
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#define USE_TABLE_ELEMENT_TYPE uint8_t
|
#define USE_TABLE_ELEMENT_TYPE uint8_t
|
||||||
|
|
||||||
/* Cateories used in the Universal Shaping Engine spec:
|
/* Cateories used in the Universal Shaping Engine spec:
|
||||||
* https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
|
* https://docs.microsoft.com/en-us/typography/script-development/use
|
||||||
*/
|
*/
|
||||||
/* Note: This enum is duplicated in the -machine.rl source file.
|
/* Note: This enum is duplicated in the -machine.rl source file.
|
||||||
* Not sure how to avoid duplication. */
|
* Not sure how to avoid duplication. */
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Universal Shaping Engine.
|
* Universal Shaping Engine.
|
||||||
* https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
|
* https://docs.microsoft.com/en-us/typography/script-development/use
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const hb_tag_t
|
static const hb_tag_t
|
||||||
|
|
|
@ -548,7 +548,7 @@ _hb_ot_shape_fallback_spaces (const hb_ot_shape_plan_t *plan,
|
||||||
|
|
||||||
case t::SPACE_NARROW:
|
case t::SPACE_NARROW:
|
||||||
/* Half-space?
|
/* Half-space?
|
||||||
* Unicode doc http://www.unicode.org/charts/PDF/U2000.pdf says ~1/4 or 1/5 of EM.
|
* Unicode doc https://unicode.org/charts/PDF/U2000.pdf says ~1/4 or 1/5 of EM.
|
||||||
* However, in my testing, many fonts have their regular space being about that
|
* However, in my testing, many fonts have their regular space being about that
|
||||||
* size. To me, a percentage of the space width makes more sense. Half is as
|
* size. To me, a percentage of the space width makes more sense. Half is as
|
||||||
* good as any. */
|
* good as any. */
|
||||||
|
|
|
@ -116,8 +116,7 @@ hb_ot_new_tag_to_script (hb_tag_t tag)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Complete list at:
|
* Complete list at:
|
||||||
* https://www.microsoft.com/typography/otspec/scripttags.htm
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags
|
||||||
* https://www.microsoft.com/typography/otspec160/scripttagsProposed.htm
|
|
||||||
*
|
*
|
||||||
* Most of the script tags are the same as the ISO 15924 tag but lowercased.
|
* Most of the script tags are the same as the ISO 15924 tag but lowercased.
|
||||||
* So we just do that, and handle the exceptional cases in a switch.
|
* So we just do that, and handle the exceptional cases in a switch.
|
||||||
|
@ -159,7 +158,7 @@ typedef struct {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Complete list at:
|
* Complete list at:
|
||||||
* http://www.microsoft.com/typography/otspec/languagetags.htm
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
|
||||||
*
|
*
|
||||||
* Generated by intersecting the OpenType language tag list from
|
* Generated by intersecting the OpenType language tag list from
|
||||||
* Draft OpenType 1.5 spec, with with the ISO 639-3 codes from
|
* Draft OpenType 1.5 spec, with with the ISO 639-3 codes from
|
||||||
|
@ -176,7 +175,7 @@ typedef struct {
|
||||||
* Updated as of 2015-05-06: OT1.7 on MS website has some newer
|
* Updated as of 2015-05-06: OT1.7 on MS website has some newer
|
||||||
* items that we don't have here, eg. Zazaki. This is the new
|
* items that we don't have here, eg. Zazaki. This is the new
|
||||||
* items in OpenType 1.7 (red items), most of which we have:
|
* items in OpenType 1.7 (red items), most of which we have:
|
||||||
* http://www.microsoft.com/typography/otspec170/languagetags.htm
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const LangTag ot_languages[] = {
|
static const LangTag ot_languages[] = {
|
||||||
|
@ -1010,7 +1009,7 @@ hb_ot_tag_from_language (hb_language_t language)
|
||||||
/**
|
/**
|
||||||
* hb_ot_tag_to_language:
|
* hb_ot_tag_to_language:
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Return value: (transfer none):
|
* Return value: (transfer none):
|
||||||
*
|
*
|
||||||
|
|
|
@ -221,8 +221,8 @@ static int errno = 0; /* Use something better? */
|
||||||
# endif
|
# endif
|
||||||
# elif defined(_MSC_VER) || defined(__MINGW32__)
|
# elif defined(_MSC_VER) || defined(__MINGW32__)
|
||||||
/* For MSVC:
|
/* For MSVC:
|
||||||
* http://msdn.microsoft.com/en-ca/library/tze57ck3.aspx
|
* https://msdn.microsoft.com/en-us/library/tze57ck3.aspx
|
||||||
* http://msdn.microsoft.com/en-ca/library/zk17ww08.aspx
|
* https://msdn.microsoft.com/en-us/library/zk17ww08.aspx
|
||||||
* mingw32 headers say atexit is safe to use in shared libraries.
|
* mingw32 headers say atexit is safe to use in shared libraries.
|
||||||
*/
|
*/
|
||||||
# define HB_USE_ATEXIT 1
|
# define HB_USE_ATEXIT 1
|
||||||
|
|
|
@ -42,7 +42,7 @@ static const union HB_STRING_ARRAY_TYPE_NAME {
|
||||||
struct {
|
struct {
|
||||||
/* I like to avoid storing the nul-termination byte since we don't need it,
|
/* I like to avoid storing the nul-termination byte since we don't need it,
|
||||||
* but C++ does not allow that.
|
* but C++ does not allow that.
|
||||||
* https://stackoverflow.com/questions/28433862/why-initializer-string-for-array-of-chars-is-too-long-compiles-fine-in-c-not
|
* https://stackoverflow.com/q/28433862
|
||||||
*/
|
*/
|
||||||
#define _S(s) char HB_PASTE (str, __LINE__)[sizeof (s)];
|
#define _S(s) char HB_PASTE (str, __LINE__)[sizeof (s)];
|
||||||
#include HB_STRING_ARRAY_LIST
|
#include HB_STRING_ARRAY_LIST
|
||||||
|
|
|
@ -202,8 +202,8 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Space estimates based on:
|
/* Space estimates based on:
|
||||||
* http://www.unicode.org/charts/PDF/U2000.pdf
|
* https://unicode.org/charts/PDF/U2000.pdf
|
||||||
* https://www.microsoft.com/typography/developers/fdsspec/spaces.aspx
|
* https://docs.microsoft.com/en-us/typography/develop/character-design-standards/whitespace
|
||||||
*/
|
*/
|
||||||
enum space_t {
|
enum space_t {
|
||||||
NOT_SPACE = 0,
|
NOT_SPACE = 0,
|
||||||
|
@ -276,10 +276,10 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
|
||||||
* We permute the "fixed-position" classes 10-26 into the order
|
* We permute the "fixed-position" classes 10-26 into the order
|
||||||
* described in the SBL Hebrew manual:
|
* described in the SBL Hebrew manual:
|
||||||
*
|
*
|
||||||
* http://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
|
* https://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
|
||||||
*
|
*
|
||||||
* (as recommended by:
|
* (as recommended by:
|
||||||
* http://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering-t6751.0.html)
|
* https://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering/msg22823/)
|
||||||
*
|
*
|
||||||
* More details here:
|
* More details here:
|
||||||
* https://bugzilla.mozilla.org/show_bug.cgi?id=662055
|
* https://bugzilla.mozilla.org/show_bug.cgi?id=662055
|
||||||
|
@ -306,8 +306,8 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
|
||||||
* Arabic
|
* Arabic
|
||||||
*
|
*
|
||||||
* Modify to move Shadda (ccc=33) before other marks. See:
|
* Modify to move Shadda (ccc=33) before other marks. See:
|
||||||
* http://unicode.org/faq/normalization.html#8
|
* https://unicode.org/faq/normalization.html#8
|
||||||
* http://unicode.org/faq/normalization.html#9
|
* https://unicode.org/faq/normalization.html#9
|
||||||
*/
|
*/
|
||||||
#define HB_MODIFIED_COMBINING_CLASS_CCC27 28 /* fathatan */
|
#define HB_MODIFIED_COMBINING_CLASS_CCC27 28 /* fathatan */
|
||||||
#define HB_MODIFIED_COMBINING_CLASS_CCC28 29 /* dammatan */
|
#define HB_MODIFIED_COMBINING_CLASS_CCC28 29 /* dammatan */
|
||||||
|
@ -346,9 +346,9 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
|
||||||
#define HB_MODIFIED_COMBINING_CLASS_CCC122 122 /* mai * */
|
#define HB_MODIFIED_COMBINING_CLASS_CCC122 122 /* mai * */
|
||||||
|
|
||||||
/* Tibetan
|
/* Tibetan
|
||||||
*
|
*
|
||||||
* In case of multiple vowel-signs, use u first (but after achung)
|
* In case of multiple vowel-signs, use u first (but after achung)
|
||||||
* this allows Dzongkha multi-vowel shortcuts to render correctly
|
* this allows Dzongkha multi-vowel shortcuts to render correctly
|
||||||
*/
|
*/
|
||||||
#define HB_MODIFIED_COMBINING_CLASS_CCC129 129 /* sign aa */
|
#define HB_MODIFIED_COMBINING_CLASS_CCC129 129 /* sign aa */
|
||||||
#define HB_MODIFIED_COMBINING_CLASS_CCC130 132 /* sign i */
|
#define HB_MODIFIED_COMBINING_CLASS_CCC130 132 /* sign i */
|
||||||
|
|
|
@ -445,7 +445,7 @@ static const utf8_validity_test_t utf8_validity_tests[] = {
|
||||||
{ "\xe2\x89\xa0\xe2\x89\xa0", 5, 3, FALSE },
|
{ "\xe2\x89\xa0\xe2\x89\xa0", 5, 3, FALSE },
|
||||||
{ "\xe2\x89\xa0\xe2\x89\xa0", 6, 6, TRUE },
|
{ "\xe2\x89\xa0\xe2\x89\xa0", 6, 6, TRUE },
|
||||||
|
|
||||||
/* examples from http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt */
|
/* examples from https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt */
|
||||||
/* greek 'kosme' */
|
/* greek 'kosme' */
|
||||||
{ "\xce\xba\xe1\xbd\xb9\xcf\x83\xce\xbc\xce\xb5", -1, 11, TRUE },
|
{ "\xce\xba\xe1\xbd\xb9\xcf\x83\xce\xbc\xce\xb5", -1, 11, TRUE },
|
||||||
/* first sequence of each length */
|
/* first sequence of each length */
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
/* Unit tests for hb-ot-tag.h */
|
/* Unit tests for hb-ot-tag.h */
|
||||||
|
|
||||||
|
|
||||||
/* https://www.microsoft.com/typography/otspec/scripttags.htm */
|
/* https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_simple_tags (const char *s, hb_script_t script)
|
test_simple_tags (const char *s, hb_script_t script)
|
||||||
|
@ -112,7 +112,7 @@ test_ot_tag_script_simple (void)
|
||||||
/* Unicode-5.1 additions */
|
/* Unicode-5.1 additions */
|
||||||
test_simple_tags ("vai ", HB_SCRIPT_VAI);
|
test_simple_tags ("vai ", HB_SCRIPT_VAI);
|
||||||
|
|
||||||
/* https://www.microsoft.com/typography/otspec160/scripttagsProposed.htm */
|
/* https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags */
|
||||||
|
|
||||||
/* Unicode-5.2 additions */
|
/* Unicode-5.2 additions */
|
||||||
test_simple_tags ("mtei", HB_SCRIPT_MEETEI_MAYEK);
|
test_simple_tags ("mtei", HB_SCRIPT_MEETEI_MAYEK);
|
||||||
|
@ -137,7 +137,7 @@ test_ot_tag_script_indic (void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* https://www.microsoft.com/typography/otspec/languagetags.htm */
|
/* https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_language_two_way (const char *tag_s, const char *lang_s)
|
test_language_two_way (const char *tag_s, const char *lang_s)
|
||||||
|
|
|
@ -154,7 +154,7 @@ test_shape_clusters (void)
|
||||||
buffer = hb_buffer_create ();
|
buffer = hb_buffer_create ();
|
||||||
hb_buffer_set_direction (buffer, HB_DIRECTION_LTR);
|
hb_buffer_set_direction (buffer, HB_DIRECTION_LTR);
|
||||||
{
|
{
|
||||||
/* https://code.google.com/p/chromium/issues/detail?id=497578 */
|
/* https://crbug.com/497578 */
|
||||||
hb_codepoint_t test[] = {0xFFF1, 0xF0B6};
|
hb_codepoint_t test[] = {0xFFF1, 0xF0B6};
|
||||||
hb_buffer_add_utf32 (buffer, test, 2, 0, 2);
|
hb_buffer_add_utf32 (buffer, test, 2, 0, 2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue