<S> : SkScalerCtx::charToGlyphID uni=0x6708
<S> : SkScalerCtx::getContextFromChar uni=0x6708
<S> : SkScalerCtx::allocNextContext
new fallback cache entry: "ja"
new fallback cache entry: "ja-Jpan" -> "ja"
new fallback cache entry: "ja-Jpan-JP" -> "ja"
---- nextLogicalFont:
currFontID=20,
origFontID=20,
plainFontID=20,
plainFallbackFontIndex=-1,
nextFallbackFontIndex=0 => nextFontID=59
<E> : SkScalerCtx::allocNextContext newfontID=0x003B
<V> : SkScalerCtx::getContextFromChar uni=0x6708 glyphID=0x0B8E fontID=0x003B found
<E> : SkScalerCtx::getContextFromChar uni=0x6708 glyphID=0x0B8E fontID=0x003B <==
<P> : SkScalerCtx::charToGlyphID uni=0x6708 glyphID=0x0B8E fontID=0x003B cnt=0x1DC6 base=0x00041C
<E> : SkScalerCtx::charToGlyphID uni=0x6708 glyphID=0x0FAA fontID=0x003B cnt=0x1DC6 base=0x00041C
0x1DC6=0d7622
SkScalerContext* SkScalerContext::getContextFromChar(SkUnichar uni, unsigned& glyphID) {
LOGD("<S> : uni=0x%04X", uni);
SkScalerContext* ctx = this;
for (;;) {
glyphID = ctx->generateCharToGlyph(uni);
if (glyphID) {
LOGD("<V> : uni=0x%04X glyphID=0x%04X fontID=0x%04X found",
uni, glyphID, ctx->fRec.fFontID);
break;
}
ctx = ctx->getNextContext();
if (NULL == ctx) {
LOGD("<P> ctx==NULL");
return NULL;
}
}
LOGD("<E> : uni=0x%04X glyphID=0x%04X fontID=0x%04X <==",
uni, glyphID, ctx->fRec.fFontID);
return ctx;
}
uint16_t SkScalerContext::charToGlyphID(SkUnichar uni) {
LOGD("<S> : uni=0x%04X ", uni);
unsigned glyphID;
SkScalerContext* ctx = getContextFromChar(uni, glyphID);
if (!ctx) {
LOGD("<E> : uni=0x%04X no more contexts", uni);
return 0;
}
LOGD("<P> : uni=0x%04X glyphID=0x%04X fontID=0x%04X cnt=0x%04X base=0x%06X",
uni, glyphID, ctx->fRec.fFontID,
ctx->getGlyphCount(), ctx->fBaseGlyphCount);
glyphID += ctx->fBaseGlyphCount;
0x0B8E + 0x041C = 0xFAA
if (glyphID > 0xFFFF) {
LOGD("<P> : uni=0x%04X glyphID > 0xFFFF", uni);
glyphID = 0;
}
LOGD("<E> : uni=0x%04X glyphID=0x%04X fontID=0x%04X cnt=0x%04X base=0x%06X",
uni, glyphID, ctx->fRec.fFontID,
ctx->getGlyphCount(), ctx->fBaseGlyphCount);
return SkToU16(glyphID);
}