in fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java [486:537]
private Object parseNextToken(RandomAccessRead randomAcccessRead) throws IOException
{
int nextByte = randomAcccessRead.read();
// skip whitespace
while (nextByte == 0x09 || nextByte == 0x20 || nextByte == 0x0D || nextByte == 0x0A)
{
nextByte = randomAcccessRead.read();
}
switch (nextByte)
{
case '%':
return readLine(randomAcccessRead, nextByte);
case '(':
return readString(randomAcccessRead);
case '>':
if (randomAcccessRead.read() == '>')
{
return MARK_END_OF_DICTIONARY;
}
else
{
throw new IOException("Error: expected the end of a dictionary.");
}
case ']':
return MARK_END_OF_ARRAY;
case '[':
return readArray(randomAcccessRead);
case '<':
return readDictionary(randomAcccessRead);
case '/':
return readLiteralName(randomAcccessRead);
case -1:
{
// EOF returning null
break;
}
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
return readNumber(randomAcccessRead, nextByte);
default:
return readOperator(randomAcccessRead, nextByte);
}
return null;
}