summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh')
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh417
1 files changed, 0 insertions, 417 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh
deleted file mode 100644
index 49506e9f5ab..00000000000
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright © 2018 Ebrahim Byagowi
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-#ifndef HB_AAT_LAYOUT_JUST_TABLE_HH
-#define HB_AAT_LAYOUT_JUST_TABLE_HH
-
-#include "hb-aat-layout-common.hh"
-#include "hb-ot-layout.hh"
-#include "hb-open-type.hh"
-
-#include "hb-aat-layout-morx-table.hh"
-
-/*
- * just -- Justification
- * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6just.html
- */
-#define HB_AAT_TAG_just HB_TAG('j','u','s','t')
-
-
-namespace AAT {
-
-using namespace OT;
-
-
-struct ActionSubrecordHeader
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
- }
-
- HBUINT16 actionClass; /* The JustClass value associated with this
- * ActionSubrecord. */
- HBUINT16 actionType; /* The type of postcompensation action. */
- HBUINT16 actionLength; /* Length of this ActionSubrecord record, which
- * must be a multiple of 4. */
- public:
- DEFINE_SIZE_STATIC (6);
-};
-
-struct DecompositionAction
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
- }
-
- ActionSubrecordHeader
- header;
- HBFixed lowerLimit; /* If the distance factor is less than this value,
- * then the ligature is decomposed. */
- HBFixed upperLimit; /* If the distance factor is greater than this value,
- * then the ligature is decomposed. */
- HBUINT16 order; /* Numerical order in which this ligature will
- * be decomposed; you may want infrequent ligatures
- * to decompose before more frequent ones. The ligatures
- * on the line of text will decompose in increasing
- * value of this field. */
- ArrayOf<HBUINT16>
- decomposedglyphs;
- /* Number of 16-bit glyph indexes that follow;
- * the ligature will be decomposed into these glyphs.
- *
- * Array of decomposed glyphs. */
- public:
- DEFINE_SIZE_ARRAY (18, decomposedglyphs);
-};
-
-struct UnconditionalAddGlyphAction
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
- }
-
- protected:
- ActionSubrecordHeader
- header;
- HBGlyphID addGlyph; /* Glyph that should be added if the distance factor
- * is growing. */
-
- public:
- DEFINE_SIZE_STATIC (8);
-};
-
-struct ConditionalAddGlyphAction
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
- }
-
- protected:
- ActionSubrecordHeader
- header;
- HBFixed substThreshold; /* Distance growth factor (in ems) at which
- * this glyph is replaced and the growth factor
- * recalculated. */
- HBGlyphID addGlyph; /* Glyph to be added as kashida. If this value is
- * 0xFFFF, no extra glyph will be added. Note that
- * generally when a glyph is added, justification
- * will need to be redone. */
- HBGlyphID substGlyph; /* Glyph to be substituted for this glyph if the
- * growth factor equals or exceeds the value of
- * substThreshold. */
- public:
- DEFINE_SIZE_STATIC (14);
-};
-
-struct DuctileGlyphAction
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
- }
-
- protected:
- ActionSubrecordHeader
- header;
- HBUINT32 variationAxis; /* The 4-byte tag identifying the ductile axis.
- * This would normally be 0x64756374 ('duct'),
- * but you may use any axis the font contains. */
- HBFixed minimumLimit; /* The lowest value for the ductility axis tha
- * still yields an acceptable appearance. Normally
- * this will be 1.0. */
- HBFixed noStretchValue; /* This is the default value that corresponds to
- * no change in appearance. Normally, this will
- * be 1.0. */
- HBFixed maximumLimit; /* The highest value for the ductility axis that
- * still yields an acceptable appearance. */
- public:
- DEFINE_SIZE_STATIC (22);
-};
-
-struct RepeatedAddGlyphAction
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
- }
-
- protected:
- ActionSubrecordHeader
- header;
- HBUINT16 flags; /* Currently unused; set to 0. */
- HBGlyphID glyph; /* Glyph that should be added if the distance factor
- * is growing. */
- public:
- DEFINE_SIZE_STATIC (10);
-};
-
-struct ActionSubrecord
-{
- unsigned int get_length () const { return u.header.actionLength; }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- if (unlikely (!c->check_struct (this)))
- return_trace (false);
-
- switch (u.header.actionType)
- {
- case 0: return_trace (u.decompositionAction.sanitize (c));
- case 1: return_trace (u.unconditionalAddGlyphAction.sanitize (c));
- case 2: return_trace (u.conditionalAddGlyphAction.sanitize (c));
- // case 3: return_trace (u.stretchGlyphAction.sanitize (c));
- case 4: return_trace (u.decompositionAction.sanitize (c));
- case 5: return_trace (u.decompositionAction.sanitize (c));
- default: return_trace (true);
- }
- }
-
- protected:
- union {
- ActionSubrecordHeader header;
- DecompositionAction decompositionAction;
- UnconditionalAddGlyphAction unconditionalAddGlyphAction;
- ConditionalAddGlyphAction conditionalAddGlyphAction;
- /* StretchGlyphAction stretchGlyphAction; -- Not supported by CoreText */
- DuctileGlyphAction ductileGlyphAction;
- RepeatedAddGlyphAction repeatedAddGlyphAction;
- } u; /* Data. The format of this data depends on
- * the value of the actionType field. */
- public:
- DEFINE_SIZE_UNION (6, header);
-};
-
-struct PostcompensationActionChain
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- if (unlikely (!c->check_struct (this)))
- return_trace (false);
-
- unsigned int offset = min_size;
- for (unsigned int i = 0; i < count; i++)
- {
- const ActionSubrecord& subrecord = StructAtOffset<ActionSubrecord> (this, offset);
- if (unlikely (!subrecord.sanitize (c))) return_trace (false);
- offset += subrecord.get_length ();
- }
-
- return_trace (true);
- }
-
- protected:
- HBUINT32 count;
-
- public:
- DEFINE_SIZE_STATIC (4);
-};
-
-struct JustWidthDeltaEntry
-{
- enum Flags
- {
- Reserved1 =0xE000,/* Reserved. You should set these bits to zero. */
- UnlimiteGap =0x1000,/* The glyph can take unlimited gap. When this
- * glyph participates in the justification process,
- * it and any other glyphs on the line having this
- * bit set absorb all the remaining gap. */
- Reserved2 =0x0FF0,/* Reserved. You should set these bits to zero. */
- Priority =0x000F /* The justification priority of the glyph. */
- };
-
- enum Priority
- {
- Kashida = 0, /* Kashida priority. This is the highest priority
- * during justification. */
- Whitespace = 1, /* Whitespace priority. Any whitespace glyphs (as
- * identified in the glyph properties table) will
- * get this priority. */
- InterCharacter = 2, /* Inter-character priority. Give this to any
- * remaining glyphs. */
- NullPriority = 3 /* Null priority. You should set this priority for
- * glyphs that only participate in justification
- * after the above priorities. Normally all glyphs
- * have one of the previous three values. If you
- * don't want a glyph to participate in justification,
- * and you don't want to set its factors to zero,
- * you may instead assign it to the null priority. */
- };
-
- protected:
- HBFixed beforeGrowLimit;/* The ratio by which the advance width of the
- * glyph is permitted to grow on the left or top side. */
- HBFixed beforeShrinkLimit;
- /* The ratio by which the advance width of the
- * glyph is permitted to shrink on the left or top side. */
- HBFixed afterGrowLimit; /* The ratio by which the advance width of the glyph
- * is permitted to shrink on the left or top side. */
- HBFixed afterShrinkLimit;
- /* The ratio by which the advance width of the glyph
- * is at most permitted to shrink on the right or
- * bottom side. */
- HBUINT16 growFlags; /* Flags controlling the grow case. */
- HBUINT16 shrinkFlags; /* Flags controlling the shrink case. */
-
- public:
- DEFINE_SIZE_STATIC (20);
-};
-
-struct WidthDeltaPair
-{
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
- }
-
- protected:
- HBUINT32 justClass; /* The justification category associated
- * with the wdRecord field. Only 7 bits of
- * this field are used. (The other bits are
- * used as padding to guarantee longword
- * alignment of the following record). */
- JustWidthDeltaEntry
- wdRecord; /* The actual width delta record. */
-
- public:
- DEFINE_SIZE_STATIC (24);
-};
-
-typedef OT::LArrayOf<WidthDeltaPair> WidthDeltaCluster;
-
-struct JustificationCategory
-{
- typedef void EntryData;
-
- enum Flags
- {
- SetMark =0x8000,/* If set, make the current glyph the marked
- * glyph. */
- DontAdvance =0x4000,/* If set, don't advance to the next glyph before
- * going to the new state. */
- MarkCategory =0x3F80,/* The justification category for the marked
- * glyph if nonzero. */
- CurrentCategory =0x007F /* The justification category for the current
- * glyph if nonzero. */
- };
-
- bool sanitize (hb_sanitize_context_t *c, const void *base) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this) &&
- morphHeader.sanitize (c) &&
- stHeader.sanitize (c)));
- }
-
- protected:
- ChainSubtable<ObsoleteTypes>
- morphHeader; /* Metamorphosis-style subtable header. */
- StateTable<ObsoleteTypes, EntryData>
- stHeader; /* The justification insertion state table header */
- public:
- DEFINE_SIZE_STATIC (30);
-};
-
-struct JustificationHeader
-{
- bool sanitize (hb_sanitize_context_t *c, const void *base) const
- {
- TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this) &&
- justClassTable.sanitize (c, base, base) &&
- wdcTable.sanitize (c, base) &&
- pcTable.sanitize (c, base) &&
- lookupTable.sanitize (c, base)));
- }
-
- protected:
- OffsetTo<JustificationCategory>
- justClassTable; /* Offset to the justification category state table. */
- OffsetTo<WidthDeltaCluster>
- wdcTable; /* Offset from start of justification table to start
- * of the subtable containing the width delta factors
- * for the glyphs in your font.
- *
- * The width delta clusters table. */
- OffsetTo<PostcompensationActionChain>
- pcTable; /* Offset from start of justification table to start
- * of postcompensation subtable (set to zero if none).
- *
- * The postcompensation subtable, if present in the font. */
- Lookup<OffsetTo<WidthDeltaCluster>>
- lookupTable; /* Lookup table associating glyphs with width delta
- * clusters. See the description of Width Delta Clusters
- * table for details on how to interpret the lookup values. */
-
- public:
- DEFINE_SIZE_MIN (8);
-};
-
-struct just
-{
- static constexpr hb_tag_t tableTag = HB_AAT_TAG_just;
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
-
- return_trace (likely (c->check_struct (this) &&
- version.major == 1 &&
- horizData.sanitize (c, this, this) &&
- vertData.sanitize (c, this, this)));
- }
-
- protected:
- FixedVersion<>version; /* Version of the justification table
- * (0x00010000u for version 1.0). */
- HBUINT16 format; /* Format of the justification table (set to 0). */
- OffsetTo<JustificationHeader>
- horizData; /* Byte offset from the start of the justification table
- * to the header for tables that contain justification
- * information for horizontal text.
- * If you are not including this information,
- * store 0. */
- OffsetTo<JustificationHeader>
- vertData; /* ditto, vertical */
-
- public:
- DEFINE_SIZE_STATIC (10);
-};
-
-} /* namespace AAT */
-
-
-#endif /* HB_AAT_LAYOUT_JUST_TABLE_HH */