Конвертер FB2PDF: использование

(29.09.2010)


Оглавление




1. Кодировки

В файле настройки стилей можно указать encoding для шрифта (по умолчанию Identity_H):

	{
		name:		"serif",
		regular:	"./data/antiq6.afm#cp1251",
		bold:		"./data/antiq7.afm#cp1251",
		italic:	"./data/antiq5.afm#cp1251",
		boldItalic:	"./data/antiq4.afm#cp1251"
	}


2. Межстрочные расстояния

Для того, чтобы изменять расстояние между строк и шрифт, следует редактировать файл stylesheet.json (в предыдущих версиях new.stylesheet.json) в поддиректории /data.

Пример выглядит так:

	{
		name:			"body",
		fontFamily:		"serif",
		fontSize:		"11.0pt",
		alignment:		"justified",
		firstLineIndent:	"1.5em",
		leading:		"1.2em"
	}

Здесь leading - растояние между строк.



3. Шрифты

Какой именно шрифт будет "serif", настроено в этом же файле выше:

	fontFamilies: [
		{
			name:		"sansSerif",
			regular:	"./data/verdana.ttf",
			bold:		"./data/verdanab.ttf",
			italic:	"./data/verdanai.ttf",
			boldItalic:	"./data/verdanaz.ttf"
		},
		{
			name:		"serif",
			regular:	"./data/georgia.ttf",
			bold:		"./data/georgiab.ttf",
			italic:	"./data/georgiai.ttf",
			boldItalic:	"./data/georgiaz.ttf"
		}
	]


4. Язык книги

Влияет на расстановку переносов. С комбинацией параметров defaultLanguage: "ru" и overrideLanguage: "true" оно язык, указанный в книге, проигнорирует, и будет считать его русским, а по умолчанию там стоит overrideLanguage: "false".



5. Интервал между абзацами

Какие параметры конфига отвечают за интервал между абзацами в основном тексте?

	{
		name:			"body",
		fontFamily:		"serif",
		fontSize:		"10.0pt",
		alignment:		"justified",
		firstLineIndent:	"1.5em",
		leading:		"1.2em",
		spacingAfter:	"1em",
		spacingBefore:	"1em"
	}

Здесь spacingBefore и spacingAfter отвечают за отступ перед и после абзаца.



6. Прозрачные изображения PNG

Параметр overrideImageTransparency позволяет заменить прозрачные пиксели в картинках на некий цвет, это спасает от замеченного глюка прозрачности (c PNG 4bit) в Sony Reader (и, вероятно, в других ридерах на основе Adobe Mobile SDK):

	generalSettings: {
		transliterateMetaInfo:		"true",
		imageDpi:				166,
		overrideImageTransparency:	"0xFFFFFF"
	}

Если overrideImageTransparency - пустая строка, то замены прозрачности не будет.



7. Буквицы

Пустая строка в dropcapStyle выключает буквицы:

	{
		name:				"body",
		fontFamily:			"serif",
		fontSize:			"11.0pt",
		alignment:			"justified",
		firstLineIndent:		"1.5em",
		leading:			"1.2em",
		firstFirstLineIndent:	"0em",
		dropcapStyle:		"bodyDropCap"
	},
	{
		name:				"bodyDropCap",
		enabled:			"true",
		fontFamily:			"serif",
		fontSize:			"32.0pt",
		fontStyle:			"regular",
		spacingBefore:		"3.5pt",
		spacingAfter:		"0.0pt"
	}


8. Список исключений для механизма переносов

Bот такие уж тут паттерны переносов. Не я их делал, и исправлять не буду, разве что найдутся готовые лучше.

Если сильно раздражает, можете попробовать добавить в этот файл:
fb2pdf\lib\itext-hyph-xml.jar\com\itextpdf\text\pdf\hyphenation\hyph\ru.xml

	<exceptions>
		клапп
	</exceptions>


9. Fix для Kindle

Параметр enforcePageSize отвечает за нормальное отображение неполной страницы вместо центрирования по вертикали, вставляя видимый квадратик во все углы страницы.
Цвет квадратика enforcePageSize контролируется новым параметром pageSizeEnforcerColor в формате 0xRRGGBB:

	enforcePageSize:		"false",
	pageSizeEnforcerColor:	"0x7F7F7F"


10. Контроль генерации "TOC"; инфо и транслитерация

Добавлен параметр для отключения оглавления:

	generateTOC: "false"

generateFrontMatter - можно выставить в false, тогда на первой странице книги не будет печататься всякая доп. служебная инфа (типа UUID, издательство, автор конвертации версия FB2PDF).

forceTransliterateAuthor - если выставить в true, то будет всегда авторов транлитерировать, что необходимо для Киндла, ибо русские авторы не отображаются киндом.



11. Управление стилем заголовков

В настройки добавлен стиль заголовка тел (body) книги:

	{
		name:			"bodyTitle",
		baseStyle:		"default",
		fontSize:		"16.0pt",
		fontStyle:		"bold",
		alignment:		"center",
		lastSpacingAfter:	"0.6em",
		disableHyphenation:	"true"
	}


12. Трекинг (Tracking, управление расстоянием между символами)

Oпция trackingSpaceCharRatio указывает, в каком соотношении распределять "лишнее" пространство в выровненной строке. Чем больше, тем больше места достанется интервалам между словами. Очень большое число, например 10000, фактически означает "межсимвольное расстояние не трожь". По умолчанию 2.5, возможный минимум 0.001.

Т.е. всё лишнее пространство в строке распределяется между междусловными и междусимвольными расстояниями. Междусловные расстояния будут увеличены в trackingSpaceCharRatio раз больше, чем междусимвольные.



13. Стили для заголовков

subSectionTitle = title in section in section
subSubSectionTitle = title in section in section in section
bodyTitle = title in body
bodySubtitle = subtitle in body

	<?xml version="1.0"?>
	<body>
	    <title> The Book </title>
	    <subtitle> Some stupid book </subtitle>
	    <section>
	        <title> Part 1 </title>
	        <section>
	            <title> Chapter 1 </title>
	            <section>
	                <title> * * * </title>
	            </section>
	        </section>
	    </section>
	</body>


14. Метаданные (название, автор)

В ридер из PDF-а попадает то, что находится в соответствующих полях (см. в его свойствах). А в PDF автор и название попадают из того куска fb2, который в текстовом редакторе выглядит примерно так:

	<book_title>Семнадцать каменных ангелов</book_title>


15. Размер страницы для разных устройств

Задается в разделе pageStyle, параметры pageWidth и pageHeight.

Sony PRS-300: 74.168 x 95.758 мм

Sony PRS-600: 88.184 x 113.854 мм (584х754 pixels ~ 88.184x113.854 mm ~ 3.47x4.48 inch)

Sony PRS-900: 88.184 x 147.678 мм

Kindle DX:

  • В портретной ориентации: 784x1150 pixels ~ 133 х 195 mm ~ 5.23"х7.67"

  • В ландшафтной ориентации: 1160х774 pixels ~ 196 х 131 mm ~ 7.73"х5.16"

  • Пропорции сторон: 0.682 и 1.499 соответственно.
  • Kindle 3: 84.560 x 110.985 мм (560x735 pixels)



    16. Переход на новую страницу

    Параметр sectionNewPage контролирует новую страницу для частей/глав и т.д.

    Части и главы в исходном документе представлены тегами section, вложенными друг в друга.

    По умолчанию:

    	sectionNewPage: {
    		"0": 1.0,
    		"1": 0.5
    	}

    Эта запись означает следующее:

    - Для section с уровнем вложения 0 (то есть верхнего уровня, вероятно "часть") перейти на новую страницу, если свободного места на текущей странице осталось меньше 100% (то есть всегда)

    - Для section с уровнем вложения 1 (вероятно "глава") перейти на новую страницу, если свободного места на текущей странице осталось меньше 50%

    Значение 0.0, равно как и отсутствие значения, будет означать "на новую страницу не переходить"



    17. Работа с картинками

    Параметр strictImageSequence позволяет задать строгий порядок картинок.



    18. Верхние и нижние индексы

    Поддержка тегов sub и sup (нижний и верхний индексы)



    19. “Висячие” строки (“вдовы и сироты”)

    «Висячей» строкой в типографской практике называют концевую строку абзаца, расположенную в начале полосы или колонки, а также начальную строку абзаца, оказавшуюся в конце полосы колонки. То есть это строка, которая оторвана от своего абзаца и «висит» в одиночестве на предыдущей или следующей странице.

    В справочной литературе различаются «верхняя висячая строка» и «нижняя висячая строка» (на английском первая называется «вдовой», widow, вторая — «сиротой», orphan). На русском типографском жаргоне и то, и другое называют «блядской строкой».

    Для отключения борьбы со вдовами установить:

    	preventWidows: "false"


    20. “Висячие” знаки препинаний

    Параметр hangingPunctuation позволяет указать, какие знаки должны висеть, если указать пустую строку - ничего висеть не будет. По умолчанию так:

    	hangingPunctuation: ".,;:'-"


    21. Параметры командной строки

    	fb2pdf [-h] [-s styles] <input file | directory> [-r] [<output file | directory>]
    		-h,--help			Show usage information and quit
    		-l,--log <arg> [-e cpN]	Log creation (“--log false” отключает создание log-файла)
    		-r,--recursive		Process subdirectories (обрабатывать подкаталоги)
    		-s,--stylesheet <PATH>	Stylesheet file (файл с настройками)

    По умолчанию, логгинг включен, как и было.

    Например, вот так можно совсем выключить логирование:

    Лог и стандартный вывод имеют установленную кодировку по умолчанию: cp1251.

    Заменить на любую другую можно при помощи параметра -e.

    	Примеры:
    		fb2pdf test.fb2
    		fb2pdf "c:\My Books"
    		fb2pdf test.fb2 mybook.pdf
    		fb2pdf -s data\mystyle.json test.fb2
    		fb2pdf -l my_log_file.txt -e cp866 test.fb2


    Временные параметры

  • название раздела: Heading 1 (Verdana)

  • тело раздела: Text body (Verdana)

  • подсвеченный параметр: цвет синий (blue)

  • подсвеченное значение параметра: цвет светло-синий (light-blue)