Show More
Commit Description:
fig bugs in login report
Commit Description:
fig bugs in login report
References:
File last commit:
Show/Diff file:
Action:
node_modules/fontkit/src/aat/AATLayoutEngine.js
| 49 lines
| 1.4 KiB
| application/javascript
| JavascriptLexer
|
r789 | import * as AATFeatureMap from './AATFeatureMap'; | |||
import * as Script from '../layout/Script'; | ||||
import AATMorxProcessor from './AATMorxProcessor'; | ||||
export default class AATLayoutEngine { | ||||
constructor(font) { | ||||
this.font = font; | ||||
this.morxProcessor = new AATMorxProcessor(font); | ||||
this.fallbackPosition = false; | ||||
} | ||||
substitute(glyphRun) { | ||||
// AAT expects the glyphs to be in visual order prior to morx processing, | ||||
// so reverse the glyphs if the script is right-to-left. | ||||
if (glyphRun.direction === 'rtl') { | ||||
glyphRun.glyphs.reverse(); | ||||
} | ||||
this.morxProcessor.process(glyphRun.glyphs, AATFeatureMap.mapOTToAAT(glyphRun.features)); | ||||
} | ||||
getAvailableFeatures(script, language) { | ||||
return AATFeatureMap.mapAATToOT(this.morxProcessor.getSupportedFeatures()); | ||||
} | ||||
stringsForGlyph(gid) { | ||||
let glyphStrings = this.morxProcessor.generateInputs(gid); | ||||
let result = new Set; | ||||
for (let glyphs of glyphStrings) { | ||||
this._addStrings(glyphs, 0, result, ''); | ||||
} | ||||
return result; | ||||
} | ||||
_addStrings(glyphs, index, strings, string) { | ||||
let codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]); | ||||
for (let codePoint of codePoints) { | ||||
let s = string + String.fromCodePoint(codePoint); | ||||
if (index < glyphs.length - 1) { | ||||
this._addStrings(glyphs, index + 1, strings, s); | ||||
} else { | ||||
strings.add(s); | ||||
} | ||||
} | ||||
} | ||||
} | ||||