thanks Igor. I’m trying to look at the font reloading bug.
On 28 Mar 2014, at 17:19, Igor Stasenko <siguc...@gmail.com> wrote: > https://pharo.fogbugz.com/f/cases/13150/Different-memory-alignment-on-different-platforms > > > On 28 March 2014 16:42, Igor Stasenko <siguc...@gmail.com> wrote: > so, the quick and dirty fix is to put: > > CairoGlyph class>>byteAlignment > > NativeBoost platformId = NativeBoostConstants win32PlatformId ifTrue: [ > ^ 8 ]. > ^ super byteAlignment > > and then: > > CairoGlyph rebuildFieldAccessors > CairoGlyphsArray initialize > > (note you must run this snippet each time your image changes platform).. > > and i need more time to fix it for real, because it is NB issue, to > automatically recalculate the structs size > if it changes platform.. (which also means you cannot store instances of > struct in image which survive the session) > ... damn.. that's going to be complicated. > > --- > > > > On 28 March 2014 16:27, Igor Stasenko <siguc...@gmail.com> wrote: > > > > On 28 March 2014 16:01, Igor Stasenko <siguc...@gmail.com> wrote: > > Ookkayy.. > so, current status: > > - finally we got an agreement that big red square because of font loading > issues and font rendering artifacts is two separate issues. > Thanks! > - i am not going to address font-loading issue here and now.. (because we > spent time on it earlier today with Stef already and you should have the > report on it in separate mail). > > - we seem to be agreed that it is best to use same (up-to-date version) of > software when reporting issues to work on them. Thanks again. :) > > - while on linux and mac things seem to be working fine, i can confirm that > there is rendering artifacts (same as reported by Vincent) on Windows. > > so i going to explore what causing this problem.. > > ... and found the cause: > > On windows, for unknown reason, the structure (cairo_glyph_t) uses different > memory space alignment than on mac and linux > > fieldsDesc > ^ #( > ulong index; > double x; > double y; > ) > > on mac and linux , the size of this structure in memory = 4 + 8 + 8 = 20 > bytes, > on windows, however, due to 8-byte alignment, it is 4 + 8 + 8 + (4 > alignment) bytes... > > this causing the effect that if you copy array of glyphs in memory, > it does not copying whole array by slightly less (because it uses wrong > struct size which is smaller than it is).. > and because of that, you got weird artefacts at the tail of string, replaced > by misplaced/invalid characters etc.. > because it is basically read from uninitialized part of memory with random > data. > > i going to fix structure alignment for windows from default 4 bytes to 8 > bytes.. > but this is not very good news.. because this affecting many things... (as > you can imagine, not only cairo/athens working with external structures, > which need to be properly aligned). > > -- > Best regards, > Igor Stasenko. > > > > -- > Best regards, > Igor Stasenko. > > > > -- > Best regards, > Igor Stasenko.