Правильный синтаксис показан в online documentation
%substr mychar 'xyzw' 1 ; equivalent to %define mychar 'x'
В общем, для препроцессора строковых функций, которые он говорит о строках и строковых литералов, которые разъясняются here и могут быть заключены в одинарные кавычки, двойные кавычки и обратные кавычки :
String constants are character strings used in the context of some pseudo-instructions, namely the DB family and INCBIN (where it represents a filename.) They are also used in certain preprocessor directives.
A string constant looks like a character constant, only longer.
И о character constants (где разделители фактически объяснены):
A character string consists of up to eight characters enclosed in either single quotes ('...'
), double quotes ("..."
) or backquotes (`...`
). Single or double quotes are equivalent to NASM (except of course that surrounding the constant with single quotes allows double quotes to appear within it and vice versa); the contents of those are represented verbatim. Strings enclosed in backquotes support C-style -escapes for special characters.
Как сказано в комментарии, скорее всего, PDF-файл был испорчен текстовым процессором, который слишком стремился набирать красивые символы вместо правильных.
Скорее всего, они испортили PDF - возможно, какой-то текстовый процессор попытался быть слишком умным о котировках. –