stringToGlyphs static method
Implementation
static List<int> stringToGlyphs(Font font, String str) {
List<int> gls = [];
for (int i = 0; i < str.length; i++) {
int cc = str.codeUnitAt(i);
if (cc > 0xffff) i++;
gls.add(codeToGlyph(font, cc));
}
for (int i = 0; i < str.length; i++) {
int cc = str.codeUnitAt(i); //
if (cc == 2367) {
var t = gls[i - 1];
gls[i - 1] = gls[i];
gls[i] = t;
}
if (cc > 0xffff) i++;
}
Map<String, dynamic>? gsub = font.GSUB;
if (gsub == null) return gls;
var llist = gsub["lookupList"], flist = gsub["featureList"];
final List<String> cligs = [
"rlig",
"liga",
"mset",
"isol",
"init",
"fina",
"medi",
"half",
"pres",
"blws" /* Tibetan fonts like Himalaya.ttf */
];
//console.warn(gls.slice(0));
Map<int, bool> tused = {};
for (int fi = 0; fi < flist.length; fi++) {
Map<String, dynamic> fl = flist[fi];
if (cligs.indexOf(fl["tag"]) == -1) continue;
for (int ti = 0; ti < fl["tab"].length; ti++) {
if (fl["tab"][ti] == true) continue;
tused[fl["tab"][ti]] = true;
var tab = llist[fl["tab"][ti]];
//console.warn(fl.tab[ti], tab.ltype);
//console.warn(fl.tag, tab);
for (int ci = 0; ci < gls.length; ci++) {
var feat = _getWPfeature(str, ci);
if ("isol,init,fina,medi".indexOf(fl["tag"]) != -1 &&
fl["tag"] != feat) continue;
applySubs(gls, ci, tab, llist);
}
}
}
return gls;
}