[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] gsoc-craig-2023-final 573649c1a: [autofit] Add files necessa
From: |
Werner Lemberg |
Subject: |
[freetype2] gsoc-craig-2023-final 573649c1a: [autofit] Add files necessary for adjustment database |
Date: |
Tue, 31 Oct 2023 15:51:36 -0400 (EDT) |
branch: gsoc-craig-2023-final
commit 573649c1ae48b1cd2a28a15004e79b4a2d6346fa
Author: Craig White <gerzytet@gmail.com>
Commit: Craig White <gerzytet@gmail.com>
[autofit] Add files necessary for adjustment database
* src/autofit/afadjust.h header file for adjustment database functions
* src/autofit/afadjust.c will contain implementations of the
adjustment database functions
---
src/autofit/afadjust.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++
src/autofit/afadjust.h | 34 ++++++++++++
2 files changed, 172 insertions(+)
diff --git a/src/autofit/afadjust.c b/src/autofit/afadjust.c
new file mode 100644
index 000000000..d48e06883
--- /dev/null
+++ b/src/autofit/afadjust.c
@@ -0,0 +1,138 @@
+#include "afadjust.h"
+#include <freetype/freetype.h>
+#include <freetype/internal/ftobjs.h>
+#include <freetype/internal/ftmemory.h>
+#include <freetype/internal/ftdebug.h>
+
+#define AF_ADJUSTMENT_DATABASE_LENGTH (
sizeof(adjustment_database)/sizeof(adjustment_database[0]) )
+#undef FT_COMPONENT
+#define FT_COMPONENT afadjust
+
+/*
+ All entries in this list must be sorted by unicode codepoint ascending
+ The table entries are 3 numbers consisting of:
+ - unicode codepoint. THESE MUST BE LISTED IN ASCENDING ORDER
+ - the vertical adjustment type. This should be one of the enum constants in
AF_VerticalSeparationAdjustmentType
+ - 1 if the topmost contour is a tilde and should be prevented from
flattening.
+*/
+FT_LOCAL_ARRAY_DEF( AF_AdjustmentDatabaseEntry )
+adjustment_database[] =
+{
+ {0x21, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /* ! */
+ {0x69, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /* i */
+ {0x6A, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /* j */
+ {0xA1, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*Inverted Exclamation
Mark*/
+ {0xBF, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /* j */
+ {0xA1, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*Inverted Exclamation
Mark*/
+ {0xBF, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*Inverted Question
Mark*/
+ {0xC0, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*A with grave*/
+ {0xC1, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*A with acute*/
+ {0xC2, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*A with circumflex*/
+ {0xC3, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*A with tilde*/
+ {0xC8, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*E with grave*/
+ {0xCC, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*I with grave*/
+ {0xCD, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xCE, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xD1, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xD2, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xD3, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xD4, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xD5, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xD9, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xD1, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xDB, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xDD, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xE0, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xE1, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xE2, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xE3, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 1}, /*a with tilde*/
+ {0xE8, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xE9, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xEA, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xEC, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xED, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xEE, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xF1, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}, /*n with tilde*/
+ {0xF2, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xF3, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xF4, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xF5, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 1}, /*o with tilde*/
+ {0xF9, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xFA, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xFB, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0xFD, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x100, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x101, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x102, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x103, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x106, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x108, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x109, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x10A, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x10B, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x10C, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x10D, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x10E, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x112, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x113, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x114, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x115, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x116, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x117, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x11B, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x11C, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x11D, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x11E, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x11F, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x120, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x121, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x123, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x124, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x125, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x128, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x129, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 1}, /*i with tilde*/
+ {0x12A, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x12B, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x12C, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x12D, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x12F, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x130, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x134, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x135, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x139, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x13A, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x143, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x144, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x147, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x14C, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x14D, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x14E, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x14F, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x154, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x155, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x158, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x159, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x15A, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x15B, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x15C, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x15D, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x160, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x161, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x164, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x168, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x169, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 1}, /*u with tilde*/
+ {0x16A, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x16B, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x16C, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x16D, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x174, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x175, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x176, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x177, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x179, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x17A, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x17B, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x17C, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x17D, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0},
+ {0x17E, AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, 0}
+};
diff --git a/src/autofit/afadjust.h b/src/autofit/afadjust.h
new file mode 100644
index 000000000..6b67703d0
--- /dev/null
+++ b/src/autofit/afadjust.h
@@ -0,0 +1,34 @@
+#ifndef AFADJUST_H_
+#define AFADJUST_H_
+
+#include <freetype/fttypes.h>
+
+FT_BEGIN_HEADER
+
+/*The type of adjustment that should be done to prevent cases where 2 parts of
a character*/
+/*stacked vertically merge, even though they should be separate*/
+typedef enum AF_VerticalSeparationAdjustmentType_
+{
+ /*This means that the hinter should find the topmost contour and push it
up until its lowest point is 1 pixel*/
+ /*above the highest point not part of that contour.*/
+ AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP,
+
+ /*This is the opposite direction. The hinter should find the bottommost
contour*/
+ /*And push it down until there is a 1 pixel gap*/
+ AF_VERTICAL_ADJUSTMENT_BOTTOM_CONTOUR_DOWN,
+
+ AF_VERTICAL_ADJUSTMENT_NONE
+} AF_VerticalSeparationAdjustmentType;
+
+typedef struct AF_AdjustmentDatabaseEntry_ {
+ FT_UInt32 codepoint;
+ AF_VerticalSeparationAdjustmentType vertical_separation_adjustment_type;
+ } AF_AdjustmentDatabaseEntry;
+
+struct AF_ReverseCharacterMap_;
+
+typedef struct AF_ReverseCharacterMap_ *AF_ReverseCharacterMap;
+
+FT_END_HEADER
+
+#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] gsoc-craig-2023-final 573649c1a: [autofit] Add files necessary for adjustment database,
Werner Lemberg <=