Age | Commit message (Collapse) | Author |
|
Added a vector of pointers to CFX_Fonts in the class CPDF_Font, so that
fallback fonts may be used. In CPDF_CharPosList::Load, the glyphs for each
character are calculated. When m_Font does not support a character, a fallback
font is selected and the character is rendered using that font. This meant
adding an attribute to FXTEXT_CHARPOS so it knows which font renders it.
Also, methods in fpdf_render_text.cpp now may need to call device drawing
methods multiple times because these only support one font at a time. In
CPDF_TextRenderer::DrawNormalText and in CPDF_TextRenderer::DrawTextPath, the
device drawing method is called as few times as possible by grouping contiguous
characters rendered by the same font. In
CPDF_RenderStatus::DrawTextPathWithPattern, drawing was already done one
character at a time, but precalculating CFX_FaceCache. Now, the face cache is
precalculated for all of the fallback fonts.
The list of fallback fonts does not include tha main font. Otherwise the list
would be of raw pointers to avoid double free problems. For now, the font
Arial is used as fallback. This should fix the issue of not seeing Latin
characters displayed when bad fonts are used. However, this should be improved.
Tested manually using the file in the bug, plus a font directory containing a
font that supports Hangul but not Latin. This font is chosen as the substitute
font, but Latin characters are now being rendered.
Design proposal: go/pdfium_fallbackfonts
BUG=pdfium:358
Review-Url: https://codereview.chromium.org/2276653002
|
|
It was intended to be unsigned in the first place, and we're
perfectly happy with the overflow as long as it is no longer
undefined behaviour.
BUG=638489
Review-Url: https://codereview.chromium.org/2258053003
|
|
BUG=635438
Review-Url: https://codereview.chromium.org/2248473002
|
|
Review-Url: https://codereview.chromium.org/2248463002
|
|
Review-Url: https://codereview.chromium.org/2248453002
|
|
files.
This is the third CL to separate fx_ge into classes, one per file.
All fx_ge.h includes had to be replaced with new includes
The method definitions for CFX_FxgeDevice were not moved to a single file.
These methods are defined in two folders different from fxge/ge, so they were left untouched for now.
Review-Url: https://codereview.chromium.org/2223213002
|
|
Review-Url: https://codereview.chromium.org/2226003003
|
|
And use it where appropriate.
Review-Url: https://codereview.chromium.org/2224623002
|
|
This is the first CL in an attempt to split up the classes in fxge/include/fx_ge.h into their own files.
Review-Url: https://codereview.chromium.org/2217663002
|
|
Review-Url: https://codereview.chromium.org/2194853002
|
|
For the class owned member variables, use std::unique_ptr or
std::vector for memory management.
BUG=pdfium:518
Review-Url: https://codereview.chromium.org/2169793002
|
|
Also did some cleanups such as removing an unused member variables and some unused structs.
BUG=pdfium:518
Review-Url: https://codereview.chromium.org/2119013002
|
|
Also remove some if statements that are always true/false.
Review-Url: https://codereview.chromium.org/2094073002
|
|
Review-Url: https://codereview.chromium.org/2093313002
|
|
This Cl removes FPDFAPI_LoadCID2UnicodeMap() and inlines the code into the one
caller.
Review-Url: https://codereview.chromium.org/2097513002
|
|
Move ifx_renderdevicedriver class to its own file to share with
multiple devices to reduce code duplication.
Review-Url: https://codereview.chromium.org/2078783002
|
|
Since PDFium is compiled as C++ code, the void keyword is not needed.
BUG=pdfium:519
Review-Url: https://codereview.chromium.org/2084603003
|
|
- Clean up CFX_GEModule.
- Remove duplicate #defines in fx_ge.h
- Remove IsFontStyleFromCharCode() that always returns true.
- Mark a FXTEXT_CHARPOS field as Mac only.
Review-Url: https://codereview.chromium.org/2075333002
|
|
This change contains files in core/fpdfapi directory. This is part
of the efforts to make PDFium code compilable by Clang chromium
style plugins.
The changes are mainly the following:
-- move inline constructor/destructor of complex class/struct out-of-line;
-- add constructor/destructor of complex class/struct if not
explicitly defined;
-- add explicit out-of-line copy constructor when needed;
-- move inline virtual functions out-of-line;
-- Properly mark virtual functions with 'override';
-- some minor cleanups;
BUG=pdfium:469
Review-Url: https://codereview.chromium.org/2060973002
|
|
Make the return types/arguments match reality.
Review-Url: https://codereview.chromium.org/2053483002
|
|
Introduce a logically const initialization (via mutable
members) so that this can happen lazily under const methods.
Review-Url: https://codereview.chromium.org/2045033002
|
|
Also sort the static table to be compatible with bsearch().
Review-Url: https://codereview.chromium.org/2047813002
|
|
Review-Url: https://codereview.chromium.org/2032613003
|
|
When there are duplicate variable declarations, the inner names shadow the
outter ones. This is error prone and harder to read. Remove all the
instances found by /analyze.
BUG=chromium:613623, chromium:427616
Review-Url: https://codereview.chromium.org/2027273002
|
|
So everyone can avoid doing Byte to WideString conversions.
Also remove CFX_GEFont::GetPsName() and deduplicate a couple of
GetPsName() calls.
Review-Url: https://codereview.chromium.org/2019173002
|
|
Review-Url: https://codereview.chromium.org/2003833003
|
|
Most of the time, we want to operate on chars as if they
were unsigned, but there are a few places where we need
the default (questionably signed) values. Consolidate
the casting in a single place rather than forcing callers
to get a char* ptr.
BUG=pdfium:493
Review-Url: https://codereview.chromium.org/1972053003
|
|
Review-Url: https://codereview.chromium.org/1973913002
|
|
BUG=pdfium:493
Review-Url: https://codereview.chromium.org/1967223002
|
|
This CL removes the interfaces:
* IPDF_ObjectRenderer
* IPDF_OCContext
* IPDF_RenderModule
* IPDF_PageModule
The CPDF_RenderModule was just wrapping new and delete calls. This Cl moves
those up to the callers and removes the CPDF_RenderModule class.
Review URL: https://codereview.chromium.org/1918323003
|
|
- Merge CPDF_Page::Load() into ctor.
- Remove always nullptr param for CPDF_Page::ParseContent().
- Remove unneeded indirection in IPDF_RenderModule.
- Delete CPDF_ParseOptions.
- Fix up CPDF_Pattern.
Review URL: https://codereview.chromium.org/1918113002
|
|
fx_system.h errors out during compile if _FXM_PLATFORM_ is not
one of the four values tested in the ifdef.
Remove duplicated code, and use unique_ptr for cleanup.
Review URL: https://codereview.chromium.org/1912023002
|
|
The original code caused an optimization warning when
gcc tries to get rid of 'count > m_Length - index'
in CFX_ByteStringC::Mid() while assuming there is no signed
integer overflow.
This could also be avoided once FX_STRSIZE is no longer a
signed integer type.
Review URL: https://codereview.chromium.org/1906213002
|
|
These are exposed by making the ByteString from ByteStringC
ctor explicit, but we can clean them up independently.
Review URL: https://codereview.chromium.org/1884363002
|
|
StringC's are all that's needed here. Also CMap_GetString()
and GetCode() are side-effect free, so remove calls where
the value is not used.
Review URL: https://codereview.chromium.org/1889003002
|
|
BUG=
Review URL: https://codereview.chromium.org/1885973002
|
|
This CL removes IFX_ArabicChar, IFX_RTFBreak, IFX_TxtBreak, IFX_WordBreak,
IFX_FormatString, and IFX_GSUBTable. References were updated to be the concrete
classes.
The CFX_GSUBTable was also removed as it is unused.
BUG=pdfium:468
Review URL: https://codereview.chromium.org/1882213002
|
|
Replace the usage of CFX_ArrayTemplate inside CPDF_Array, which
has non-standard APIs such as GetSize() returns int.
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1867183002 .
|
|
The naming is redundant given the base type, and will stand
in the way of consolidating Byte and Wide code.
BUG=
Review URL: https://codereview.chromium.org/1862123003
|
|
This CL is a straight move of the fxge includes into core/fxge/include.
Review URL: https://codereview.chromium.org/1868533002
|
|
This CL updates CFX_ByteStringC to use the more common c_str
and raw_str instead of GetCStr and GetPtr.
Review URL: https://codereview.chromium.org/1857713003
|
|
Having this happen implicitly can be dangerous because the lifetime
has to be considered; we should have caught the "red bots" in
https://codereview.chromium.org/1847333004/#ps60001 at compile time.
Review URL: https://codereview.chromium.org/1853233002
|
|
This makes pdfium code on Linux and Mac sign-compare warning free.
The warning flag will be re-enabled after checking on windows clang build.
BUG=pdfium:29
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1841643002 .
|
|
Every time I read this code, I have to make the mental substituion
that "Element value" means "de-ref indirect object", so it might
as well just say so.
BUG=
Review URL: https://codereview.chromium.org/1841173002
|
|
Remove unimplemented/unused class, and other cleanup
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1834063002 .
|
|
Review URL: https://codereview.chromium.org/1832173003
|
|
First step to getting rid of FX_DWORD.
R=ochang@chromium.org
Review URL: https://codereview.chromium.org/1832113003 .
|
|
This CL splits apart the core/include/fpdfapi/fpdf_resource.h file and places
the classes into individual files.
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1824033002 .
|
|
This CL moves the fxcrt code into the core/fxcrt directory. The only exception
was fx_bidi.h which was moved into core/fxcrt as it is not used outside of
core/.
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1825953002 .
|
|
After moving EmbeddedUnicodeFromCharcode the
IsValidEmbeddedCharcodeFromUnicodeCharset method is no longer used on windows.
TBR=weili@chromium.org
Review URL: https://codereview.chromium.org/1827823002 .
|