2014-04-21 157 views
0

我试图围绕truetype规范包裹头部。在this page的部分'cmap'格式4中,参数idDelta被列为无符号的16位整数(UInt16)。然而,进一步下来,给出了一些例子,这里idDelta给出了值-9,-18,-27和1.这是怎么回事?负unsigned int?

+0

我在蟒蛇工作而标签仍然来自上一个问题。我的错。 –

回答

0

该页面上的idDelta的定义和使用不一致。在struct subheader中,它被定义为int16,而稍早的相同子标题被列为UInt16*4

这可能是规范中的一个错误。

如果你看一下实际的实现,like this one from perl Tk,你会看到idDelta通常给出签署:

typedef struct SUBHEADER { 
    USHORT firstCode;  /* First valid low byte for subHeader. */ 
    USHORT entryCount;  /* Number valid low bytes for subHeader. */ 
    SHORT idDelta;  /* Constant adder to get base glyph index. */ 
    USHORT idRangeOffset; /* Byte offset from here to appropriate 
       * glyphIndexArray. */ 
} SUBHEADER; 

或者看到libpdfxx实现:

struct SubHeader 
{ 
USHORT firstCode; 
USHORT entryCount; 
SHORT idDelta; 
USHORT idRangeOffset; 
}; 
+0

感谢您的额外信息,我同意它必须是一个错误。 –