poppler issueshttps://gitlab.freedesktop.org/poppler/poppler/-/issues2020-11-19T09:58:47Zhttps://gitlab.freedesktop.org/poppler/poppler/-/issues/988Line width of circle, square and polygon annotations without appearance strea...2020-11-19T09:58:47ZTilman HausherrLine width of circle, square and polygon annotations without appearance stream isn't correct[ann.pdf](/uploads/3c80add71afa55a98e21ade737728875/ann.pdf)
Expected rendering:
![ann1](/uploads/db3d7abe06bc944019e75dfd93959e4c/ann1.png)
actual rendering with pdftoppm (version 0.88.0 of cygwin):
![ann.pdf-1](/uploads/d2f7347eafec...[ann.pdf](/uploads/3c80add71afa55a98e21ade737728875/ann.pdf)
Expected rendering:
![ann1](/uploads/db3d7abe06bc944019e75dfd93959e4c/ann1.png)
actual rendering with pdftoppm (version 0.88.0 of cygwin):
![ann.pdf-1](/uploads/d2f7347eafecd1b4a7f36614eeff2d9d/ann.pdf-1.png)https://gitlab.freedesktop.org/poppler/poppler/-/issues/989Shape of circle annotation without appearance stream isn't round2020-11-14T19:19:07ZTilman HausherrShape of circle annotation without appearance stream isn't round[ann.pdf](/uploads/d9b46706401290b90680072ccbd7d715/ann.pdf)
See #988 for renderings... the shape looks kindof weird.
I wonder if it is the Bézier contant? Poppler uses 0.55228475 in poppler/Annot.cc; https://spencermortensen.com/artic...[ann.pdf](/uploads/d9b46706401290b90680072ccbd7d715/ann.pdf)
See #988 for renderings... the shape looks kindof weird.
I wonder if it is the Bézier contant? Poppler uses 0.55228475 in poppler/Annot.cc; https://spencermortensen.com/articles/bezier-circle/ recommends 0.551915024494; Apache PDFBox uses 0.55555417 which was calculated from sampling content streams generated using Adobe Reader.https://gitlab.freedesktop.org/poppler/poppler/-/issues/990Path artifacts for circle annotation under certain render conditions2020-11-16T08:06:46ZTobias DeimingerPath artifacts for circle annotation under certain render conditionsIf we render [ann.pdf](/uploads/d9b46706401290b90680072ccbd7d715/ann.pdf) from #989 like this
```
$ pdftoppm -x 123 -y 425 -W 200 -H 200 -f 0 -singlefile -png ./ann.pdf ./circle_annot
```
we see a spurious line at the bottom of the circl...If we render [ann.pdf](/uploads/d9b46706401290b90680072ccbd7d715/ann.pdf) from #989 like this
```
$ pdftoppm -x 123 -y 425 -W 200 -H 200 -f 0 -singlefile -png ./ann.pdf ./circle_annot
```
we see a spurious line at the bottom of the circle.
![circle_annot_bad](/uploads/5205688e640976794b8ab7daec0bb162/circle_annot_bad.png)
If we change the crop box slightly, the spurious line goes away.
```
$ pdftoppm -x 123 -y 430 -W 200 -H 200 -f 0 -singlefile -png ./ann.pdf ./circle_annot
```
![circle_annot_ok](/uploads/2e7d14db83ed67883604f22d9305651d/circle_annot_ok.png)
Reproducible with poppler 0.80.0 and current master. Did not yet investigate further.https://gitlab.freedesktop.org/poppler/poppler/-/issues/991pdftocairo fails to convert a specific PDF2022-06-27T19:15:18ZShai4shepdftocairo fails to convert a specific PDFsample pdf: https://www.math.ku.dk/english/research-files/conference-papers/CopenhagenD-Tuesday.pdf
```
pdftocairo -png -f 1 -l 1 CopenhagenD-Thursday.pdf
```
gets nothing, while
```
pdftoppm -png -f 1 -l 1 CopenhagenD-Thursday.pdf
```
...sample pdf: https://www.math.ku.dk/english/research-files/conference-papers/CopenhagenD-Tuesday.pdf
```
pdftocairo -png -f 1 -l 1 CopenhagenD-Thursday.pdf
```
gets nothing, while
```
pdftoppm -png -f 1 -l 1 CopenhagenD-Thursday.pdf
```
gets the correct image.
Reference: https://gitlab.gnome.org/GNOME/evince/-/issues/1517#note_960597https://gitlab.freedesktop.org/poppler/poppler/-/issues/992Transparency rendered opaque2024-03-24T21:08:42ZTilman HausherrTransparency rendered opaquefile is from https://bugs.ghostscript.com/show_bug.cgi?id=697425
[gs-bugzilla697425.pdf](/uploads/5ca1abdda2bdf1df1a4b5d026ba16b24/gs-bugzilla697425.pdf)
see the yellow marked text
Expected rendering (pdftoppm):
![gs-bugzilla697425.pdf...file is from https://bugs.ghostscript.com/show_bug.cgi?id=697425
[gs-bugzilla697425.pdf](/uploads/5ca1abdda2bdf1df1a4b5d026ba16b24/gs-bugzilla697425.pdf)
see the yellow marked text
Expected rendering (pdftoppm):
![gs-bugzilla697425.pdf-1](/uploads/1341bf49f0ce6bdbcbe7fab2dd27aa19/gs-bugzilla697425.pdf-1.png)
Actual rendering (pdftocairo, version 0.88.0 of cygwin):
![gs-bugzilla697425.pdf-1](/uploads/e41a7c174c109caa5f3bef743dace1f1/gs-bugzilla697425.pdf-1.png)https://gitlab.freedesktop.org/poppler/poppler/-/issues/993Annotations rendered with border when color array is empty2020-11-24T00:44:48ZTilman HausherrAnnotations rendered with border when color array is empty[PDFBOX-3351-538928-p4.pdf](/uploads/fe0947c677747d450fc5cf8e3c8a8509/PDFBOX-3351-538928-p4.pdf)
expected (Adobe Reader):
![PDFBOX-3351-538928-p4.pdf-1](/uploads/99e48417d260dc65de798f768d3bae5f/PDFBOX-3351-538928-p4.pdf-1.png)
actual...[PDFBOX-3351-538928-p4.pdf](/uploads/fe0947c677747d450fc5cf8e3c8a8509/PDFBOX-3351-538928-p4.pdf)
expected (Adobe Reader):
![PDFBOX-3351-538928-p4.pdf-1](/uploads/99e48417d260dc65de798f768d3bae5f/PDFBOX-3351-538928-p4.pdf-1.png)
actual (pdftoppm, version 0.88.0 of cygwin):
![PDFBOX-3351-538928-p4-poppler.png-1](/uploads/5c19c7d0b989cc967ea4b9761e0e9f1e/PDFBOX-3351-538928-p4-poppler.png-1.png)https://gitlab.freedesktop.org/poppler/poppler/-/issues/994Rendering of type 1 shading with sampled function never finishes with pdftocairo2022-10-07T10:20:57ZTilman HausherrRendering of type 1 shading with sampled function never finishes with pdftocairo[FUNSH01.pdf](/uploads/89d70862cb682402543f99682740ef87/FUNSH01.pdf)
Rendering is done in a second with pdftoppm, but never finishes (I stopped after several minutes) with pdftocairo (version 21.01.0 of cygwin).[FUNSH01.pdf](/uploads/89d70862cb682402543f99682740ef87/FUNSH01.pdf)
Rendering is done in a second with pdftoppm, but never finishes (I stopped after several minutes) with pdftocairo (version 21.01.0 of cygwin).https://gitlab.freedesktop.org/poppler/poppler/-/issues/995DeviceGray colorspace in transparency group ignored2020-12-03T16:29:55ZTilman HausherrDeviceGray colorspace in transparency group ignoredFile is from https://bugs.ghostscript.com/show_bug.cgi?id=697354
[gs-bugzilla697354.pdf](/uploads/d2574f30ef64ccfc0e853631151db1a5/gs-bugzilla697354.pdf)
Expected:
![gs-bugzilla697354.pdf-1](/uploads/ad1d0c268136944603d17aa631e98179/gs...File is from https://bugs.ghostscript.com/show_bug.cgi?id=697354
[gs-bugzilla697354.pdf](/uploads/d2574f30ef64ccfc0e853631151db1a5/gs-bugzilla697354.pdf)
Expected:
![gs-bugzilla697354.pdf-1](/uploads/ad1d0c268136944603d17aa631e98179/gs-bugzilla697354.pdf-1.png)
Actual (pdftoppm and pdftocairo, 0.88.0 on cygwin):
![gs-bugzilla697354.pdf-1](/uploads/806996503f67a07579e8bf977f06e96e/gs-bugzilla697354.pdf-1.png)
(I think I'm mostly done now. Your project is excellent and most of what I found are obscure corner cases)https://gitlab.freedesktop.org/poppler/poppler/-/issues/996Merging editable PDFs with pdfunite makes only the first one to be still edit...2020-11-18T10:39:43ZGustavo HenriqueMerging editable PDFs with pdfunite makes only the first one to be still editable in the final documentWhen I tried to merge with pdfunite the files listed below, that are all editable PDFs that work individually, the page corresponding to the first file in the parameters list is still editable, but the following aren't. I have changed th...When I tried to merge with pdfunite the files listed below, that are all editable PDFs that work individually, the page corresponding to the first file in the parameters list is still editable, but the following aren't. I have changed the parameters order to be sure that this was not an issue with that specific document, and it was confirmed: only the page corresponding to the first document in the parameter list is editable in the final document.
Files (original version in the [Wizards of the Coast website](https://dnd.wizards.com/products/tabletop-games/trpg-resources/trpg-resources)): [Spellcasting_Sheet__Optional__-_Form_Fillable.pdf](/uploads/20aa33724e0ed22943e5333797329c32/Spellcasting_Sheet__Optional__-_Form_Fillable.pdf), [Character_Sheet_-_Form_Fillable.pdf](/uploads/d3864173d92efbc68b981914a2734402/Character_Sheet_-_Form_Fillable.pdf), [Character_Details__Optional__-_Form_Fillable.pdf](/uploads/74df03f0ab20999807a957855fa57447/Character_Details__Optional__-_Form_Fillable.pdf)https://gitlab.freedesktop.org/poppler/poppler/-/issues/997Borderless annotations rendered with thin border2020-11-25T08:46:58ZOliver SanderBorderless annotations rendered with thin borderThe pdf spec says that an annotation is to be drawn without a border if the border width is set to zero. (In the 1.7 spec this is in Table 166.) However, poppler does draw a thin boundary in this case.
Test document: [annotations-wi...The pdf spec says that an annotation is to be drawn without a border if the border width is set to zero. (In the 1.7 spec this is in Table 166.) However, poppler does draw a thin boundary in this case.
Test document: [annotations-with-zero-width-boundary.pdf](/uploads/b119fa370cc5fb53f8cd032372ae2f4d/annotations-with-zero-width-boundary.pdf), taken and modified from the test file in #988.https://gitlab.freedesktop.org/poppler/poppler/-/issues/998poppler-cpp memory leaking on Windows for some pdf2020-12-03T05:45:03Za bpoppler-cpp memory leaking on Windows for some pdf## Env
OS: Windows 10
IDE: Visual Studio 2019
poppler: 20.11.0 x64 msvc
## Problem
Memory leak for some pdf when calling `poppler::page_renderer::render`
## Reproduce
1. Download the pdf<br>
http://www.cninfo.com.cn/new/disclosure/det...## Env
OS: Windows 10
IDE: Visual Studio 2019
poppler: 20.11.0 x64 msvc
## Problem
Memory leak for some pdf when calling `poppler::page_renderer::render`
## Reproduce
1. Download the pdf<br>
http://www.cninfo.com.cn/new/disclosure/detail?plate=szse&orgId=gssz0000672&stockCode=000672&announcementId=1207498718&announcementTime=2020-04-15<br>
Click the blue button on the top right
2. In a Visual Studio solution, include `test.h` and call the function
test.h
```
#pragma once
#include <iostream>
#include <poppler-document.h>
#include "poppler-page.h"
#include "poppler-page-renderer.h"
std::string pdf_file_path(u8"上峰水泥:2019年年度报告.PDF")
void test_poppler_memory_leak()
{
if (!poppler::page_renderer::can_render())
{
std::cerr << "can not render" << std::endl;
return;
}
poppler::document * p_doc = poppler::document::load_from_file(pdf_file_path);
int page_index = 85;
poppler::page * p_page = p_doc->create_page(page_index);
poppler::page_renderer page_render;
poppler::image poppler_img = page_render.render_page(p_page, 120, 120); // it leaks
delete p_page;
delete p_doc;
}
```
3. Leak message sample in Visual Studio 2019
```
{35684} normal block at 0x000001EA57F0CA40, 32 bytes long.
Data: <C:\Windows\Fonts> 43 3A 5C 57 69 6E 64 6F 77 73 5C 46 6F 6E 74 73
{35683} normal block at 0x000001EA57EDDC80, 16 bytes long.
Data: <p4 W > 70 34 EB 57 EA 01 00 00 00 00 00 00 00 00 00 00
{35682} normal block at 0x000001EA57EB3470, 40 bytes long.
Data: < W @ W > 80 DC ED 57 EA 01 00 00 40 CA F0 57 EA 01 00 00
{35681} normal block at 0x000001EA57F0C560, 32 bytes long.
Data: <Courier-BoldObli> 43 6F 75 72 69 65 72 2D 42 6F 6C 64 4F 62 6C 69
{35680} normal block at 0x000001EA57EDDD20, 16 bytes long.
Data: < 5 W > C0 35 EB 57 EA 01 00 00 00 00 00 00 00 00 00 00
```
## More Info
With many other pdf files, it doesn't leak, even include Chinese fonts.
It seems that some fonts lead to memory leaks.https://gitlab.freedesktop.org/poppler/poppler/-/issues/999poppler::image::format_gray8 to cv::Mat failed2020-11-28T10:40:04Za bpoppler::image::format_gray8 to cv::Mat failedWhen using `poppler::image::format_gray8`, it crashes due to memory access violation
```
poppler::page * page = poppler_pdf_doc->create_page(page_index);
poppler::page_renderer page_render;
page_render.set_image_format(poppler::image::fo...When using `poppler::image::format_gray8`, it crashes due to memory access violation
```
poppler::page * page = poppler_pdf_doc->create_page(page_index);
poppler::page_renderer page_render;
page_render.set_image_format(poppler::image::format_gray8);
poppler::image poppler_img = page_render.render_page(page, 120, 120);
cv::Mat(poppler_img.height(), poppler_img.width(), CV_8UC1, poppler_img.data(), poppler_img.bytes_per_row()).copyTo(__cv_mat_page);
```
But using `poppler::image::format_rgb24`, it's ok
```
poppler::page * page = __poppler_pdf_doc->create_page(page_index);
poppler::page_renderer page_render;
page_render.set_image_format(poppler::image::format_rgb24);
poppler::image poppler_img = page_render.render_page(page, 120, 120);
cv::Mat(poppler_img.height(), poppler_img.width(), CV_8UC3, poppler_img.data(), poppler_img.bytes_per_row()).copyTo(__cv_mat_page);
```
Why?
BTW, any easy way to convert format `poppler::image::format_mono` to `cv::Mat`?https://gitlab.freedesktop.org/poppler/poppler/-/issues/1000Missing border in freetext annotation2020-12-02T13:51:37ZTilman HausherrMissing border in freetext annotationWidth in border style dictionary /BS << /W 2 >> is ignored and no border is drawn. (If there is no border style dictionary then a thin border is drawn)
[ann.pdf](/uploads/37bddfb9fc2a641bdc4860e4f7fec9cd/ann.pdf)
expected (scroll down):...Width in border style dictionary /BS << /W 2 >> is ignored and no border is drawn. (If there is no border style dictionary then a thin border is drawn)
[ann.pdf](/uploads/37bddfb9fc2a641bdc4860e4f7fec9cd/ann.pdf)
expected (scroll down):
![ann-good](/uploads/c3e5471eb50853b18e90966e3034508e/ann-good.png)
actual (pdftoppm, 0.88.0 on cygwin):
![ann-bad](/uploads/11531b715fd9e294323e6a3acb2671bc/ann-bad.png)
(There are also less important issues, but I wanted to focus on the border)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1001Why not poppler::ustring derived from std::wstring instead of std::basic_stri...2020-12-03T09:10:10Za bWhy not poppler::ustring derived from std::wstring instead of std::basic_string<unsigned short>?Is it better that
```
class POPPLER_CPP_EXPORT ustring : public std::wstring
```
instead of
```
class POPPLER_CPP_EXPORT ustring : public std::basic_string<unsigned short>
```Is it better that
```
class POPPLER_CPP_EXPORT ustring : public std::wstring
```
instead of
```
class POPPLER_CPP_EXPORT ustring : public std::basic_string<unsigned short>
```https://gitlab.freedesktop.org/poppler/poppler/-/issues/1002poppler 20.12.0 regression with pdftops -level2sep2020-12-05T22:05:11ZWilliam Baderpoppler 20.12.0 regression with pdftops -level2sepcommit 75abc683868d8933f10128074a4234afaf76e77f "PSOutputDev: use the DeviceN8 bitmap for rasterization with CMYK-output + overprint" breaks the attached file.
To test it, build poppler pdftops
`cd /tmp/poppler ; rm -rf build ; mkdir bu...commit 75abc683868d8933f10128074a4234afaf76e77f "PSOutputDev: use the DeviceN8 bitmap for rasterization with CMYK-output + overprint" breaks the attached file.
To test it, build poppler pdftops
`cd /tmp/poppler ; rm -rf build ; mkdir build ; cd build ; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF .. ; make -j4 pdftops`
and then run the attached file through `pdftops -level2sep`
`cd /tmp/poppler ; rm -f x.ps ; ./build/utils/pdftops -level2sep -f 1 -l 1 /u/tests/020_ReadMe_Ghent_Output_Patch.pdf x.ps ; gv x.ps`
The background of the page should be white but the regression makes it purple.
I did a git bisection to identify the commit.
Setting `overprint = false` in line 3182 of PSOutputDev::checkPageSlice() in PSOutputDev.cc makes the page come out correctly. I know that isn't a fix, but it confirms the location of the regression.
I have also attached valgrind results from 20.12.0. I checked that pdftops 20.11.0 is clean with valgrind. The first valgrind warning is an uninitialized variable in Splash::pipeRun() and the stack trace goes to PSOutputDev::checkPageSlice(). I suspect that when it sets internalColorFormat = splashModeDeviceN8, something is still using processColorFormat = splashModeCMYK8 and the last 4 channels aren't initialized. [valgrind.txt](/uploads/175ac2723048d3ab012240b8887b5164/valgrind.txt)
Is it really necessary to implement overprinting if -overprint is not requested?
[020_ReadMe_Ghent_Output_Patch.pdf](/uploads/5a77e7020a1725e0967e5769aae624c4/020_ReadMe_Ghent_Output_Patch.pdf)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1003memory leak in Visual Studio when work with wxWidgets2020-12-04T05:09:56Za bmemory leak in Visual Studio when work with wxWidgets### Env
poppler 20.11.0
wxwidgets 3.1.4
Visual Studio 2019
Windows 10
arch x64
### Reproduce
```
#define WXUSINGDLL
#include <wx/log.h> // this leads to memory leak, if comment out this line, no memory leak
#include <poppler/cpp/poppl...### Env
poppler 20.11.0
wxwidgets 3.1.4
Visual Studio 2019
Windows 10
arch x64
### Reproduce
```
#define WXUSINGDLL
#include <wx/log.h> // this leads to memory leak, if comment out this line, no memory leak
#include <poppler/cpp/poppler-page.h>
int main()
{
poppler::page * __page = nullptr;
if (__page != nullptr)
delete __page;
return 0;
}
```
```
Detected memory leaks!
Dumping objects ->
{75} normal block at 0x00000208EC86EE70, 62 bytes long.
Data: <D:\Test> 43 3A 5C 55 73 65 72 73 5C 61 6C 67 5C 44 65 76
Object dump complete.
The program '[0x1B34] TextWxWidgets.exe' has exited with code 0 (0x0).
```https://gitlab.freedesktop.org/poppler/poppler/-/issues/1004warning when using dynamic link on Windows2021-01-08T13:40:42Za bwarning when using dynamic link on Windows### Env
* Visual Studio 2019
* Windows 10
* poppler 20.11.0
* arch x64
### Reproduce
* code
```
#include <poppler/cpp/poppler-page.h>
int main()
{
return 0;
}
```
* warning when building
```
poppler\cpp\poppler-page.h(134,42): warn...### Env
* Visual Studio 2019
* Windows 10
* poppler 20.11.0
* arch x64
### Reproduce
* code
```
#include <poppler/cpp/poppler-page.h>
int main()
{
return 0;
}
```
* warning when building
```
poppler\cpp\poppler-page.h(134,42): warning C4251: 'poppler::text_box::m_data': class 'std::unique_ptr<poppler::text_box_data,std::default_delete<poppler::text_box_data>>' needs to have dll-interface to be used by clients of class 'poppler::text_box'
```https://gitlab.freedesktop.org/poppler/poppler/-/issues/1005PDf page rendered white despite content2021-01-02T17:44:46ZPascal NiklausPDf page rendered white despite contentThis bug was originally reported here: https://bugs.kde.org/show_bug.cgi?id=430038
In several pdf documents, entire pages are displayed as blank white surface.
This is not the case when I open the same PDFs using other tools, e.g. Firef...This bug was originally reported here: https://bugs.kde.org/show_bug.cgi?id=430038
In several pdf documents, entire pages are displayed as blank white surface.
This is not the case when I open the same PDFs using other tools, e.g. Firefox.
pdfinfo does not report any problems.
The attached page demonstrates one such problem. I do not attach other
documents because they are copyrighted. However, I am happy to provide these
files directly to developers.
[pdf_problem.pdf](/uploads/8a311f02b75758ca014a4153fad331dd/pdf_problem.pdf)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1006Memory leak on Windows2020-12-09T12:42:55Za bMemory leak on WindowsSimple code leaks. While comment out a little code of poppler, no leak any more.
The code leak on Windows
```
#define WXUSINGDLL
#include <wx/log.h> // this leads to memory leak, if comment out this line, no memory leak will
#include <p...Simple code leaks. While comment out a little code of poppler, no leak any more.
The code leak on Windows
```
#define WXUSINGDLL
#include <wx/log.h> // this leads to memory leak, if comment out this line, no memory leak will
#include <poppler/cpp/poppler-page.h>
int main()
{
poppler::page * __page = nullptr;
if (__page != nullptr)
delete __page;
return 0;
}
```
When comment out the 2 parts of class page as below, no leak. And uncomment any will lead to memory leak
```
class POPPLER_CPP_EXPORT page// : public poppler::noncopyable
{
public:
...
// ~page();
...
}
```
```
class POPPLER_CPP_EXPORT noncopyable
{
public:
noncopyable(const noncopyable &) = delete;
const noncopyable &operator=(const noncopyable &) = delete;
protected:
noncopyable();
~noncopyable();
};
```
The other way, comment out `#define WXUSINGDLL` also leads to no leak.https://gitlab.freedesktop.org/poppler/poppler/-/issues/1007Feature request: command line utility for document structures2020-12-10T21:49:20ZchampignoomFeature request: command line utility for document structuresIt would be great to have a tool viewing and editing pdf structures.
Proposed functionalities:
```
pdfstructure <PDF-file> <component> [options]
Components:
table-of-contents, toc
page-numbers, num
options:
--get, -g: Print the...It would be great to have a tool viewing and editing pdf structures.
Proposed functionalities:
```
pdfstructure <PDF-file> <component> [options]
Components:
table-of-contents, toc
page-numbers, num
options:
--get, -g: Print the specified component of the pdf to stdout. This is the default behavior.
--set=file, -s: Read the component from <file> and assign it to the pdf. '-' for file means stdin.
--interactive, -i: Use $EDITOR to view and edit the component.
```
The syntax of both components should be easy to read and parse. I propose yaml as a candidate.
Examples:
```yaml
# Table of Contents
# Physical page numbers should be prefixed with "+", e.g.: +1, +2, +3, ...
# Logical page numbers should be left as is, e.g.: ii, viii, 1, 8, ...
- ii Preface
- vii Table of Contents
- 1 Chapter 1:
- 1 Section 1.1
- 6 Section 1.2
- 2 Chapter 2:
- 13 Section 2.1
- 18 Section 2.2:
- 19 Subsection 2.2.1
```
```yaml
# Page numbers
- 1-8: {from: 1, style: lower-roman} # 1: i, 2: ii, ..., 8: viii
- 9-: {from: 1} # same with {from: 1, style: decimal}; 9: 1, 10: 2, ...
```