<html><head></head><body><div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div>Hmm, interesting! But why is this better than having separate API functions for UTF-8 and thus avoid the risk altogether?</div><div><br></div><div>FWIW, filenames in my application are often not "readable" but a combination of letters, numbers and symbols which make up an identifier. It's quite possible that these will also never clash, but why take the chance?<br></div><div><br></div><div>Best regards,</div><div><br></div><div>Mikael<br></div>
<div><br></div><div><br></div>
<div id="yahoo_quoted_5087666919" class="yahoo_quoted">
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
<div>
On Tuesday, January 2, 2018, 9:52:23 PM GMT+1, Bill Spitzak <spitzak@gmail.com> wrote:
</div>
<div><br></div>
<div><br></div>
<div><div dir="ltr">One way to deal with this is to make the UTF-8->UTF-16 converter<br clear="none">translate any errors in UTF-8 encoding by looking up each byte in the<br clear="none">error in the current code page (or just hard-code CP1252) and use<br clear="none">that. This allows it to continue to work with code that has<br clear="none">extended-ASCII filenames as well as UTF-8 (except for the very low<br clear="none">chance that the filename happens to have the bytes arranged such that<br clear="none">they are a valid UTF-8 character, this is almost impossible for a<br clear="none">human-readable name in an extended ASCII). IMHO 90% of the problems<br clear="none">with I18N is that programmers don't do this, preventing a seamless<br clear="none">transition to UTF-8 where you can gradually migrate your text.<br clear="none"><br clear="none"><div class="yqt7474153087" id="yqtfd74690"><br clear="none">On Wed, Dec 27, 2017 at 12:24 AM, Uli Schlachter <<a shape="rect" ymailto="mailto:psychon@znc.in" href="mailto:psychon@znc.in">psychon@znc.in</a>> wrote:<br clear="none">> Hi,<br clear="none">><br clear="none">> I can't answer your question, but I have a question to you: What does<br clear="none">> your application do if the file name cannot be expressed in the current<br clear="none">> codepage?<br clear="none">><br clear="none">> Cheers,<br clear="none">> Uli<br clear="none">><br clear="none">> On 26.12.2017 22:10, Mikael Claesson wrote:<br clear="none">>> Hi,<br clear="none">>> What is the recommended way of dealing with the "Use UTF-8 filenames on Windows" change? Will that not break API/ABI? In my application I currently have code in place to ensure that the file names are encoded in the current codepage. I guess I will now have to first check which cairo version the user has, and then convert as needed? Are all applications expected to do this?<br clear="none">>> Best regards,<br clear="none">>> Mikael<br clear="none">>><br clear="none">>><br clear="none">>> On Tuesday, December 12, 2017, 2:06:42 AM GMT+1, Bryce Harrington <<a shape="rect" ymailto="mailto:bryce@osg.samsung.com" href="mailto:bryce@osg.samsung.com">bryce@osg.samsung.com</a>> wrote:<br clear="none">>><br clear="none">>> A new cairo snapshot 1.15.10 is now available from:<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/snapshots/cairo-1.15.10.tar.xz" target="_blank">http://cairographics.org/snapshots/cairo-1.15.10.tar.xz</a><br clear="none">>><br clear="none">>> which can be verified with:<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/snapshots/cairo-1.15.10.tar.xz.sha1" target="_blank">http://cairographics.org/snapshots/cairo-1.15.10.tar.xz.sha1</a><br clear="none">>> de180498ac563249b93ee5e17ba9aa26f90644b3 cairo-1.15.10.tar.xz<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/snapshots/cairo-1.15.10.tar.xz.sha1.asc" target="_blank">http://cairographics.org/snapshots/cairo-1.15.10.tar.xz.sha1.asc</a><br clear="none">>> (signed by Bryce Harrington)<br clear="none">>><br clear="none">>> Additionally, a git clone of the source tree:<br clear="none">>><br clear="none">>> git clone git://git.cairographics.org/git/cairo<br clear="none">>><br clear="none">>> will include a signed 1.15.10 tag which points to a commit named:<br clear="none">>> 95c464d5feaae58b6cc0990434ce2498cc315dc6<br clear="none">>><br clear="none">>> which can be verified with:<br clear="none">>> git verify-tag 1.15.10<br clear="none">>><br clear="none">>> and can be checked out with a command such as:<br clear="none">>> git checkout -b build 1.15.10<br clear="none">>><br clear="none">>><br clear="none">>> Release 1.15.10 (2017-12-07 Bryce Harrington <<a shape="rect" ymailto="mailto:bryce@osg.samsung.com" href="mailto:bryce@osg.samsung.com">bryce@osg.samsung.com</a>>)<br clear="none">>> ========================================================================<br clear="none">>> This release adds GLESv3 support to the cairo_gl backend, adds<br clear="none">>> tracking of SVG units in generated svg documents, and cleans up numerous<br clear="none">>> test failures and related issues in the PDF and Postscript backends.<br clear="none">>><br clear="none">>> For a complete log of changes, please see<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/releases/ChangeLog.1.15.10" target="_blank">http://cairographics.org/releases/ChangeLog.1.15.10</a><br clear="none">>><br clear="none">>> Features and Enhancements<br clear="none">>> -------------------------<br clear="none">>> * Add support for OpenGL ES 3.0 to the gl backend.<br clear="none">>> * Use Reusable streams for forms in Level 3 Postscript.<br clear="none">>> * Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files.<br clear="none">>> * Add CCITT_FAX mime type for PDF and PS surfaces<br clear="none">>> * svg: add a new function to specify the SVG document unit<br clear="none">>> (Bug #90166)<br clear="none">>> * Use UTF-8 filenames on Windows<br clear="none">>><br clear="none">>> API Changes<br clear="none">>> -----------<br clear="none">>> * cairo_svg_surface_set_document_unit() and<br clear="none">>> cairo_svg_surface_get_document_unit()<br clear="none">>><br clear="none">>> Dependency Changes<br clear="none">>> ------------------<br clear="none">>> None<br clear="none">>><br clear="none">>> Performance Optimizations<br clear="none">>> -------------------------<br clear="none">>> None<br clear="none">>><br clear="none">>> Bug Fixes<br clear="none">>> ---------<br clear="none">>> * Fix regression in gles version detection<br clear="none">>> * Fix undefined-behavior with integer math.<br clear="none">>> * Handle SOURCE and CLEAR operators when painting color glyphs.<br clear="none">>> (Bug #102661)<br clear="none">>> * Convert images to rgba or a8 formats when uploading with GLESv2<br clear="none">>> * Use _WIN32 instead of windows.h to check for windows build.<br clear="none">>> * Fix sigabrt printing documents with fonts lacking the mandatory .nodef<br clear="none">>> glyph.<br clear="none">>> (Bug #102922)<br clear="none">>> * Prevent curved strokes in small ctms from being culled from vector<br clear="none">>> surfaces<br clear="none">>> (Bug #103071)<br clear="none">>> * Fix painting an unbounded recording surface with the SVG backend.<br clear="none">>> * Fix falling back to system font with PDFs using certain embedded<br clear="none">>> fonts, due to truncated font names.<br clear="none">>> (Bug #103249)<br clear="none">>> * Fix handling of truetype fonts with excessively long font names<br clear="none">>> (Bug #103249)<br clear="none">>> * Fix race conditions with cairo_mask_compositor_t<br clear="none">>> (Bug #103037)<br clear="none">>> * Fix build error with util/font-view<br clear="none">>> * Fix assertion hit with PDFs using Type 4 fonts rendered with user<br clear="none">>> fonts, due to error when destroying glyph page.<br clear="none">>> (Bug #103335)<br clear="none">>> * Set default creation date for PDFs<br clear="none">>> * Prevent invalid ptr access for > 4GB images.<br clear="none">>> (Bug #98165)<br clear="none">>> * Prevent self-copy infinite loop in Postscript surface.<br clear="none">>> * Fix padded image crash in Postscript surface.<br clear="none">>> * Fix annotation bugs in PDFs and related memory leaks<br clear="none">>> * Fix test failures and other assorted issues in ps and pdf code.<br clear="none">>> * Fix code generation when using GCC legacy atomic operations<br clear="none">>> (Bug #103559)<br clear="none">>> * Fix various compilation warnings and errors.<br clear="none">>> * Fix various distcheck errors with private symbols, doxygen formatting,<br clear="none">>> etc.<br clear="none">>><br clear="none">>> See below for a complete log of changes since 1.15.8, or see:<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/releases/ChangeLog.cairo-1.15.10" target="_blank">http://cairographics.org/releases/ChangeLog.cairo-1.15.10</a><br clear="none">>><br clear="none">>><br clear="none">>><br clear="none">>> What is cairo<br clear="none">>> -------------<br clear="none">>> Cairo is a 2D graphics library with support for multiple output<br clear="none">>> devices. Currently supported output targets include the X Window<br clear="none">>> System (via both Xlib and XCB), quartz, win32, and image buffers,<br clear="none">>> as well as PDF, PostScript, and SVG file output. Experimental backends<br clear="none">>> include OpenGL, BeOS, OS/2, and DirectFB.<br clear="none">>><br clear="none">>> Cairo is free software and is available to be redistributed and/or<br clear="none">>> modified under the terms of either the GNU Lesser General Public<br clear="none">>> License (LGPL) version 2.1 or the Mozilla Public License (MPL) version<br clear="none">>> 1.1.<br clear="none">>><br clear="none">>><br clear="none">>> Where to get more information about cairo<br clear="none">>> -----------------------------------------<br clear="none">>> The primary source of information about cairo is:<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/" target="_blank">http://cairographics.org/</a><br clear="none">>><br clear="none">>> The latest versions of cairo can always be found at:<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/download" target="_blank">http://cairographics.org/download</a><br clear="none">>><br clear="none">>> Documentation on using cairo and frequently-asked questions:<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/documentation" target="_blank">http://cairographics.org/documentation</a><br clear="none">>> <a shape="rect" href="http://cairographics.org/FAQ" target="_blank">http://cairographics.org/FAQ</a><br clear="none">>><br clear="none">>><br clear="none">>> Mailing lists for contacting cairo users and developers:<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/lists" target="_blank">http://cairographics.org/lists</a><br clear="none">>><br clear="none">>> Roadmap and unscheduled things to do, (please feel free to help out):<br clear="none">>><br clear="none">>> <a shape="rect" href="http://cairographics.org/roadmap" target="_blank">http://cairographics.org/roadmap</a><br clear="none">>> <a shape="rect" href="http://cairographics.org/todo" target="_blank">http://cairographics.org/todo</a><br clear="none">>><br clear="none">>><br clear="none">>><br clear="none">>> Changes since 1.15.8<br clear="none">>> --------------------<br clear="none">>><br clear="none">>> Adrian Johnson (47):<br clear="none">>> RELEASING: use correct branch name<br clear="none">>> Remove unused variable<br clear="none">>> build: use _WIN32 instead of windows.h to check for windows build<br clear="none">>> replace _BSD_SOURCE with _DEFAULT_SOURCE<br clear="none">>> factor out ascii to double code in cff-subset into _cairo_strtod<br clear="none">>> truetype: reserve space in subset arrays for .notdef<br clear="none">>> truetype: clarify glyph count variables<br clear="none">>> Prevent curved strokes in small ctms from being culled from vector surfaces<br clear="none">>> svg: fix painting an unbounded recording surface<br clear="none">>> output-stream: allow %s strings larger than 512 chars<br clear="none">>> truetype: limit font name to 127 chars<br clear="none">>> svg: use hash table instead of user_data to track emitted surfaces<br clear="none">>> svg: source surface hash table does not need to hold the source<br clear="none">>> svg2png: remove unused headers<br clear="none">>> ft: prevent unused var warning when freetype < 2.8<br clear="none">>> fix unused function warnings<br clear="none">>> svg: recording_surface is needed even if not emitted<br clear="none">>> fix warning: variable X might be clobbered by 'longjmp'<br clear="none">>> fix warning: inlining failed in call to '_csi_stack_push'<br clear="none">>> util/font-view: fix build error<br clear="none">>> Add CCITT_FAX mime type for PDF and PS surfaces<br clear="none">>> Allow mime image to be different size to cairo image<br clear="none">>> pdf: set ca/CA instead of using an smask when the mask has constant alpha<br clear="none">>> pdf: set default create date<br clear="none">>> pdf: remove old comment<br clear="none">>> image: prevent invalid ptr access for > 4GB images<br clear="none">>> Add mime-unique-id test<br clear="none">>> pdf: fix mime-unique-id bounded recording test<br clear="none">>> pdf: fix mime-unique-id unbounded recording test<br clear="none">>> pdf: fix mime-unique-id jpeg attached to recording test<br clear="none">>> ps: emit base85 strings instead of strings of base85<br clear="none">>> ps: remove unused prolog<br clear="none">>> ps: use << >> for dictionaries instead of dict begin end<br clear="none">>> ps: don't acquire image or snapshot in acquire_source_image_from_pattern<br clear="none">>> ps: use forms for surfaces with UNIQUE_ID mime type<br clear="none">>> ps: use Reusable streams for forms in Level 3<br clear="none">>> ps: add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files<br clear="none">>> test: use CAIRO_MIME_TYPE_UNIQUE_ID with record-text-transform<br clear="none">>> ps: prevent self-copy infinite loop<br clear="none">>> ps: fix padded image crash<br clear="none">>> ps: fix extend-*-similar failures<br clear="none">>> test: update some stale ref images<br clear="none">>> pdf: fix document structure for non tagged structures<br clear="none">>> ps: fix compile with old versions of MSVC<br clear="none">>> pdf: fix some annotation bugs<br clear="none">>> Prevent -Wundef warnings in when cairo-ft.h is used without fontconfig<br clear="none">>> ps: fix compile warning<br clear="none">>><br clear="none">>> Aleksander Morgado (1):<br clear="none">>> build: fix minor typo in autogen.sh<br clear="none">>><br clear="none">>> Antonio Ospite (2):<br clear="none">>> svg: add a new function to specify the SVG document unit<br clear="none">>> svg: fix compilation with MSVC which doesn't support C99 initializers<br clear="none">>><br clear="none">>> Behdad Esfahbod (2):<br clear="none">>> Fix undefined-behavior with integer math<br clear="none">>> Handle SOURCE and CLEAR operators when painting color glyphs<br clear="none">>><br clear="none">>> Bryce Harrington (15):<br clear="none">>> Bump version for new development tree, 1.15.9<br clear="none">>> glesv2: Fix regression in gles version detection<br clear="none">>> gl: Convert images to rgba or a8 formats when uploading with GLESv2<br clear="none">>> gl: Make _cairo_gl_ensure_framebuffer a private shared routine<br clear="none">>> gl: Add support for OpenGL ES 3.0<br clear="none">>> Factor out the ISFINITE() macro<br clear="none">>> configure: Check for typeof<br clear="none">>> Un-doxygen disabled cairo_set_opacity<br clear="none">>> image: Fix include for use of ptrdiff<br clear="none">>> win32: Fix since field version number<br clear="none">>> Fix various doxygen warnings found by check-doc-syntax.sh<br clear="none">>> Fix distcheck errors on use of #ifdef<br clear="none">>> pattern: Mark a private routine as cairo_private.<br clear="none">>> 1.15.10 release<br clear="none">>> Bump version for new development tree, 1.15.9<br clear="none">>><br clear="none">>> Carlos Garcia Campos (1):<br clear="none">>> scaled-font: Fix assert when destroying glyph page<br clear="none">>><br clear="none">>> Mikhail Fludkov (2):<br clear="none">>> Surround initialisations with atomic critical section<br clear="none">>> Fix code generation when using GCC legacy atomic operations<br clear="none">>><br clear="none">>> Tom Schoonjans (1):<br clear="none">>> Use UTF-8 filenames on Windows<br clear="none">>><br clear="none">>><br clear="none">>><br clear="none">><br clear="none">><br clear="none">> --<br clear="none">> "In the beginning the Universe was created. This has made a lot of<br clear="none">> people very angry and has been widely regarded as a bad move."</div><br clear="none">> --<br clear="none">> cairo mailing list<br clear="none">> <a shape="rect" ymailto="mailto:cairo@cairographics.org" href="mailto:cairo@cairographics.org">cairo@cairographics.org</a><br clear="none">> <a shape="rect" href="https://lists.cairographics.org/mailman/listinfo/cairo" target="_blank">https://lists.cairographics.org/mailman/listinfo/cairo</a></div></div>
</div>
</div></div></body></html>