diff --git a/src/harfbuzz-shaper-all.cpp b/src/harfbuzz-shaper-all.cpp index 2dae501..6f5cd62 100644 --- a/src/harfbuzz-shaper-all.cpp +++ b/src/harfbuzz-shaper-all.cpp @@ -31,7 +31,7 @@ extern "C" { #include "harfbuzz-hebrew.c" #include "harfbuzz-arabic.c" #include "harfbuzz-hangul.c" -#include "harfbuzz-myanmar.c" +//#include "harfbuzz-myanmar.c" #include "harfbuzz-thai.c" } diff --git a/src/harfbuzz-shaper.cpp b/src/harfbuzz-shaper.cpp index ce4d4ac..2fe7ff0 100644 --- a/src/harfbuzz-shaper.cpp +++ b/src/harfbuzz-shaper.cpp @@ -399,7 +399,8 @@ static inline void positionCluster(HB_ShaperItem *item, int gfrom, int glast) item->offsets[gfrom+i].x = p.x - baseMetrics.xOffset; item->offsets[gfrom+i].y = p.y - baseMetrics.yOffset; } - item->advances[gfrom+i] = 0; + if (item->item.script != HB_Script_Myanmar) + item->advances[gfrom+i] = 0; } } @@ -515,6 +516,10 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item) attributes[pos].clusterStart = false; attributes[pos].combiningClass = cmb; logClusters[i] = cStart; + // don't use combining class for Myanmar + if (uc[pos] == 0x1037 || uc[pos] == 0x1039 || uc[pos] == 0x103a) { + attributes[pos].combiningClass = 0; + } } // one gets an inter character justification point if the current char is not a non spacing mark. // as then the current char belongs to the last one and one gets a space justification point @@ -624,7 +629,8 @@ const HB_ScriptEngine HB_ScriptEngines[] = { // Tibetan { HB_TibetanShape, HB_TibetanAttributes }, // Myanmar - { HB_MyanmarShape, HB_MyanmarAttributes }, +// { HB_MyanmarShape, HB_MyanmarAttributes }, + { HB_BasicShape, 0 }, // Georgian { HB_BasicShape, 0 }, // Hangul