View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0031678 | Open CASCADE | OCCT:Visualization | public | 2020-07-21 13:35 | 2021-11-25 20:43 |
Reporter | nds | Assigned To | bugmaster | ||
Priority | normal | Severity | feature | ||
Status | closed | Resolution | fixed | ||
Target Version | 7.6.0 | Fixed in Version | 7.6.0 | ||
Summary | 0031678: Visualization - add option enabling hinting for textured fonts | ||||
Description | Setting color for text aspect gives different result in the viewer. Calling the attached script on the current master and OCCT release 7.3.0 gives different result, shown on attached images. | ||||
Steps To Reproduce | pload ALL vinit vsetcolorbg 255 255 255 vlight -clear vlight -add ambient vtrihedron t1 -drawAxes XY -arrowColor 0 0 0 -color Whole 0 0 0 -textColor 0 0 0 vdrawtext text1 surprise -pos 100 100 0 -color 0 0 0 -height 20 vdrawtext text2 20.07.2020 -pos 100 -100 0 -color 0.1725 0.4745 0.70196 -height 20 vdrawtext text3 surprise -pos -200 100 0 -color 0 0 0 -height 20 -font "Segoe UI" vdrawtext text4 20.07.2020 -pos -200 -100 0 -color 0.1725 0.4745 0.70196 -height 20 -font "Segoe UI" vfit vtop vzoom 0.5 | ||||
Tags | No tags attached. | ||||
Test case number | Not required | ||||
|
|
text_on_occt730.png (7,873 bytes) |
|
text_on_occt_IR-2020-06-19.png (7,924 bytes) |
|
This is not a bug, this is how graphics hardware performs color blending. After 0029528, some text/background combinations become a little bit more readable and some less - no strict evidence that it become only worse has been identified on testing. The workaround is adjusting colors / fonts / text styles for the cases, where readability looks unpleasant. Disabling GL_FRAMEBUFFER_SRGB specifically for text elements can be considered option, but for now it does not look reasonable, as it just will make text blending worse/better for different backgrounds combinations. Better alternatives for rendering text to be investigated (no ideas so far). |
|
text_light_740.png (8,644 bytes) |
|
text_light_750dev.png (8,657 bytes) |
|
Test case in bug description is incorrect - it uses different text colors for OCCT 7.4.0 and for current master. See attached screenshots for corrected test case: pload MODELING VISUALIZATION vinit View vsetcolorbg 255 255 255 vlight -clear vlight -add ambient vtrihedron t1 -drawAxes XY -arrowColor 0 0 0 -color Whole 0 0 0 -textColor 0 0 0 vdrawtext text1 surprise -pos 100 100 0 -color BLACK -height 20 vdrawtext text2 20.07.2020 -pos 100 -100 0 -color CORNFLOWERBLUE -height 20 vdrawtext text3 surprise -pos -200 100 0 -color BLACK -height 20 -font "Segoe UI" vdrawtext text4 20.07.2020 -pos -200 -100 0 -color CORNFLOWERBLUE -height 20 -font "Segoe UI" vfit vtop vzoom 0.5 |
|
text_light_750dev_hinted.png (6,622 bytes) |
|
One more option is conditionally enabling hinting for such thin fonts. Currently, hinting is disabled by FT_LOAD_NO_HINTING flag in Font_FTFont constructor, which according to documentation produces blurrier result. This will not produce exactly the same result, but as it makes thin fonts less blurry, the blending with background has smaller effect. |
|
31678_wi_comparing.png (76,765 bytes) |
|
Dear Kirill commented flag FT_LOAD_NO_HINTING in Font_FTFont constructor gives better result (see 31678_wi_comparing.png). It would be great if we may set it using some new additional method in OCCT for such parameter. Thank you in advance, Natalia |
|
krita_arrow_sRGB.png (65,753 bytes) |
|
krita_arrow_scRGB.png (65,870 bytes) |
|
freetype-27-hinting-comparison.png (28,908 bytes) |
|
Branch CR31678 has been created by kgv. SHA-1: cb8a329e48d8ec80a141edbee70ac8fa9cb9196b Detailed log of new commits: Author: kgv Date: Thu Jul 23 22:39:27 2020 +0300 0031678: Visualization - add option enabling hinting for textured fonts Added new rendering parameter Graphic3d_RenderingParams::ToEnableFontHinting allowing to enable/disable hinting (default is no hinting preserving old behavior). SelectMgr_ViewerSelector3d::ClearSensitive() - fixed crash on removing presentations. Command vrenderparams has been extended with arguments -fontHinting. In addition, added new parameters -sync and -reset for synchronizing parameters across Views; parameters -raster and -rayTrace now accept optional on|off values. |
|
Here is an elaboration about font rendering from FreeType developers: https://www.freetype.org/freetype2/docs/text-rendering-general.html > The correct way of rendering a glyph image on a surface > is to alpha blend it onto the surface in linear space > and then apply gamma correction to translate the linear coverage map > to something that is correct for our screens So that current OCCT behavior more or less follows this guidance. Hinting algorithms are expected to improve text readability in general on low-resolution screens (hopefully they will die some time). However, there are a plenty of tricks around hinting (starting from patents, which have been expired circa '2011 according to FreeType). Consider enabling this feature only on non-HiDPI screens at application level. Note that OCCT does not support LCD-antialiasing of fonts (also useful only for low-resolution screens). |
|
Patch is ready for review in OCCT branch CR31678. http://jenkins-test-12.nnov.opencascade.com:8080/view/CR31678-master-KGV |
|
Branch CR31678 has been updated by kgv. SHA-1: b0435d5aca1bacd41d22eea0c8d109053becc858 Detailed log of new commits: Author: kgv Date: Fri Jul 24 02:30:05 2020 +0300 # update Font_FTFont::AdvanceX() |
|
a8_windows_nohint.png (26,482 bytes) |
|
a8_windows_hinted.png (23,636 bytes) |
|
a8_linux_nohint.png (26,098 bytes) |
|
a8_linux_hinted.png (25,921 bytes) |
|
Branch CR31678 has been updated forcibly by kgv. SHA-1: 12c2257ae5e701c66148e601dbd7325f600d33be |
|
Dear Kirill, it would be also useful, if you provide your images with additional information: - Font type, - Font size, - Free Type version. Is it possible to have the same images on light(preferable white) background? Thank you for investigations, Natalia |
|
Dear Kirill, could you please raise this patch. Setting 'ToEnableFontHinting' to 'True' in Graphic3d_RenderingParams of the view provides with expected result. Thank you for help |
|
Branch CR31678_1 has been created by kgv. SHA-1: 5fc06feb965854bb17b312479d75cf0a8c16041c Detailed log of new commits: Author: kgv Date: Wed Apr 14 14:10:40 2021 +0300 0031678: Visualization - add option enabling hinting for textured fonts Added new rendering parameter Graphic3d_RenderingParams::ToEnableFontHinting allowing to enable/disable hinting (default is no hinting preserving old behavior). Command vrenderparams has been extended with arguments -fontHinting. |
|
Branch CR31678_1 has been updated forcibly by kgv. SHA-1: 75d86f032b45890e19eb219a3638f3d9f39d144a |
|
Patch is ready for review - OCCT: branch CR31678_1. http://jenkins-test-12.nnov.opencascade.com:8080/view/CR31678_1-master-KGV/ |
|
The patch is reviewed |
|
Combination - OCCT branch : IR-2021-04-16 master SHA - 1294d5e39ed35dc97b2241956855fe794a03b0d8 a87b7ddc8cb44606b91e3f37113847c3f5f50fdc Products branch : IR-2021-04-16 SHA - 03c3cb382950144b11c09108f24673216c4e5922 was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences CPU differences: Debian80-64: OCCT Total CPU difference: 17987.850000000446 / 18020.24000000038 [-0.18%] Products Total CPU difference: 11564.760000000093 / 11543.43000000007 [+0.18%] Windows-64-VC14: OCCT Total CPU difference: 19496.34375 / 19510.890625 [-0.07%] Products Total CPU difference: 12932.890625 / 12891.265625 [+0.32%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR31678_1 has been deleted by inv. SHA-1: 75d86f032b45890e19eb219a3638f3d9f39d144a |
|
Branch CR31678 has been deleted by inv. SHA-1: 12c2257ae5e701c66148e601dbd7325f600d33be |
occt: master d37aef5c 2021-04-14 11:10:40 Committer: bugmaster Details Diff |
0031678: Visualization - add option enabling hinting for textured fonts Added new rendering parameter Graphic3d_RenderingParams::FontHinting allowing to enable/disable hinting (default is no hinting preserving old behavior). Command vrenderparams has been extended with arguments -fontHinting. |
Affected Issues 0031678 |
|
mod - src/AIS/AIS_TextLabel.cxx | Diff File | ||
mod - src/Font/FILES | Diff File | ||
mod - src/Font/Font_FTFont.cxx | Diff File | ||
mod - src/Font/Font_FTFont.hxx | Diff File | ||
add - src/Font/Font_Hinting.hxx | Diff File | ||
mod - src/Graphic3d/Graphic3d_RenderingParams.hxx | Diff File | ||
mod - src/OpenGl/OpenGl_GraphicDriver.cxx | Diff File | ||
mod - src/OpenGl/OpenGl_Text.cxx | Diff File | ||
mod - src/OpenGl/OpenGl_Text.hxx | Diff File | ||
mod - src/PrsDim/PrsDim_Dimension.cxx | Diff File | ||
mod - src/ViewerTest/ViewerTest_ViewerCommands.cxx | Diff File | ||
mod - tests/opengl/data/text/A2 | Diff File | ||
mod - tests/opengl/data/text/A8 | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-07-21 13:35 | nds | New Issue | |
2020-07-21 13:35 | nds | Assigned To | => kgv |
2020-07-21 13:35 | nds | File Added: text_on_occt730.png | |
2020-07-21 13:35 | nds | File Added: text_on_occt_IR-2020-06-19.png | |
2020-07-21 14:03 | kgv | Relationship added | child of 0029528 |
2020-07-21 14:14 | kgv | Note Added: 0093225 | |
2020-07-21 14:15 | kgv | Note Edited: 0093225 | |
2020-07-21 14:15 | kgv | Note Edited: 0093225 | |
2020-07-21 15:07 | kgv | File Added: text_light_740.png | |
2020-07-21 15:07 | kgv | File Added: text_light_750dev.png | |
2020-07-21 15:08 | kgv | Note Added: 0093229 | |
2020-07-21 15:08 | kgv | Assigned To | kgv => nds |
2020-07-21 15:08 | kgv | Status | new => feedback |
2020-07-21 15:09 | kgv | Note Edited: 0093229 | |
2020-07-21 17:50 | kgv | File Added: text_light_750dev_hinted.png | |
2020-07-21 17:55 | kgv | Note Added: 0093235 | |
2020-07-23 11:26 | nds | File Added: 31678_wi_comparing.png | |
2020-07-23 11:35 | nds | Note Added: 0093258 | |
2020-07-23 11:35 | nds | Assigned To | nds => kgv |
2020-07-23 11:35 | nds | Status | feedback => assigned |
2020-07-23 14:08 | kgv | File Added: krita_arrow_sRGB.png | |
2020-07-23 14:08 | kgv | File Added: krita_arrow_scRGB.png | |
2020-07-23 19:56 | kgv | Severity | major => feature |
2020-07-23 19:56 | kgv | Summary | Visualization - text color becomes lighter than in 7.3.0 => Visualization - add option enabling hinting for textured fonts |
2020-07-23 19:57 | kgv | File Added: freetype-27-hinting-comparison.png | |
2020-07-23 23:12 | git | Note Added: 0093273 | |
2020-07-23 23:39 | kgv | Note Added: 0093274 | |
2020-07-23 23:41 | kgv | Note Edited: 0093274 | |
2020-07-24 01:18 | kgv | Note Added: 0093275 | |
2020-07-24 01:18 | kgv | Assigned To | kgv => nds |
2020-07-24 01:18 | kgv | Status | assigned => resolved |
2020-07-24 01:48 | kgv | Assigned To | nds => kgv |
2020-07-24 01:48 | kgv | Status | resolved => assigned |
2020-07-24 02:28 | git | Note Added: 0093276 | |
2020-07-25 20:22 | kgv | File Added: a8_windows_nohint.png | |
2020-07-25 20:22 | kgv | File Added: a8_windows_hinted.png | |
2020-07-25 20:22 | kgv | File Added: a8_linux_nohint.png | |
2020-07-25 20:22 | kgv | File Added: a8_linux_hinted.png | |
2020-07-25 20:26 | kgv | File Deleted: a8_linux_hinted.png | |
2020-07-25 20:26 | kgv | File Deleted: a8_linux_nohint.png | |
2020-07-25 20:26 | kgv | File Deleted: a8_windows_nohint.png | |
2020-07-25 20:26 | kgv | File Deleted: a8_windows_hinted.png | |
2020-07-25 20:26 | kgv | File Added: a8_windows_nohint.png | |
2020-07-25 20:26 | kgv | File Added: a8_windows_hinted.png | |
2020-07-25 20:26 | kgv | File Added: a8_linux_nohint.png | |
2020-07-25 20:27 | kgv | File Added: a8_linux_hinted.png | |
2020-07-25 20:30 | git | Note Added: 0093365 | |
2020-07-27 08:33 | nds | Note Added: 0093366 | |
2020-09-21 17:42 | kgv | Target Version | 7.5.0 => 7.6.0 |
2021-04-14 12:21 | nds | Note Added: 0100294 | |
2021-04-14 12:30 | kgv | Status | assigned => feedback |
2021-04-14 16:37 | git | Note Added: 0100295 | |
2021-04-14 16:41 | git | Note Added: 0100296 | |
2021-04-14 17:46 | kgv | Note Added: 0100297 | |
2021-04-14 17:46 | kgv | Assigned To | kgv => osa |
2021-04-14 17:46 | kgv | Status | feedback => reviewed |
2021-04-15 09:28 | kgv | Status | reviewed => assigned |
2021-04-15 09:28 | kgv | Status | assigned => resolved |
2021-04-15 10:06 |
|
Note Added: 0100302 | |
2021-04-15 10:06 |
|
Assigned To | osa => bugmaster |
2021-04-15 10:06 |
|
Status | resolved => reviewed |
2021-04-17 13:08 | bugmaster | Note Added: 0100387 | |
2021-04-17 13:08 | bugmaster | Status | reviewed => tested |
2021-04-17 13:13 | bugmaster | Test case number | => Not required |
2021-04-17 13:41 | bugmaster | Changeset attached | => occt master d37aef5c |
2021-04-17 13:41 | bugmaster | Status | tested => verified |
2021-04-17 13:41 | bugmaster | Resolution | open => fixed |
2021-04-17 14:02 | git | Note Added: 0100404 | |
2021-04-17 14:02 | git | Note Added: 0100420 | |
2021-11-25 20:43 | kgv | Relationship added | parent of 0032268 |
2021-11-25 20:43 | kgv | Relationship replaced | related to 0032268 |