JuliaGraphics / FreeTypeAbstraction.jl

A Julian abstraction layer over FreeType.jl
Other
25 stars 20 forks source link

Makie standard font fails loading within non-ascii path depot path #85

Open jaakkor2 opened 6 months ago

jaakkor2 commented 6 months ago

This is with FreeTypeAbstraction v0.10.1, Julia v1.10.1 on Windows.

I set Julia depot path with

$Env:JULIA_DEPOT_PATH="C:\Users\jaakkor2\MyTemp\depå

then

julia> using Makie
Precompiling Makie
        Info Given Makie was explicitly requested, output will be shown live
ERROR: LoadError: Could not load font file "C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\assets\fonts\TeXGyreHerosMakie-Regular.otf"
Stacktrace:
  [1] error(s::String)
    @ Base .\error.jl:35
  [2] load_font
    @ C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\src\conversions.jl:1105 [inlined]
  [3] (::Makie.var"#266#268"{String})()
    @ Makie C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\src\conversions.jl:1123
  [4] get!(default::Makie.var"#266#268"{String}, h::Dict{String, FreeTypeAbstraction.FTFont}, key::String)
    @ Base .\dict.jl:479
  [5] (::Makie.var"#265#267"{String})()
    @ Makie C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\src\conversions.jl:1120
  [6] lock(f::Makie.var"#265#267"{String}, l::ReentrantLock)
    @ Base .\lock.jl:229
  [7] to_font(str::String)
    @ Makie C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\src\conversions.jl:1119
  [8] to_font(fonts::MakieCore.Attributes, s::Symbol)
    @ Makie C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\src\conversions.jl:1155
  [9] (::Makie.var"#2208#2211"{Base.RefValue{Vector{Int64}}, Observables.Observable{Vector{ColorTypes.RGBA{Float32}}}, Observables.Observable{Vector{Float32}}, Observables.Observable{Vector{GeometryBasics.Point{2, Float32}}}, Observables.Observable{Vector{Makie.GlyphCollection}}})(str::String, ts::Float64, f::Symbol, fs::MakieCore.Attributes, al::Tuple{Symbol, Symbol}, rot::Float32, jus::MakieCore.Automatic, lh::Float64, col::ColorTypes.RGBA{Float32}, scol::Tuple{Symbol, Float64}, swi::Int64, www::Int64, offs::Tuple{Float64, Float64})
    @ Makie C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\src\basic_recipes\text.jl:22
....

The file does exist since

isfile(raw"C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\assets\fonts\TeXGyreHerosMakie-Regular.otf")

return true.

FreeTypeAbstraction.try_load(raw"C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\assets\fonts\TeXGyreHerosMakie-Regular.otf")

returns nothing.

FreeTypeAbstraction.newface(raw"C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\assets\fonts\TeXGyreHerosMakie-Regular.otf")

errors

ERROR: Couldn't load font C:\Users\jaakkor2\MyTemp\depå\packages\Makie\z2T2o\assets\fonts\TeXGyreHerosMakie-Regular.otf with error: 1
Stacktrace:
 [1] error(s::String)
   @ Base .\error.jl:35
 [2] newface(facename::String)
   @ FreeTypeAbstraction C:\Users\jaakkor2\MyTemp\depå\packages\FreeTypeAbstraction\lopoc\src\types.jl:22
 [3] top-level scope
   @ REPL[11]:1

Ends up erroring in https://github.com/JuliaGraphics/FreeTypeAbstraction.jl/blob/v0.10.1/src/types.jl#L23

Note that my standard depot path works fine

FreeTypeAbstraction.newface(raw"C:\Users\jaakkor2\.julia\packages\Makie\z2T2o\assets\fonts\TeXGyreHerosMakie-Regular.otf")

returns Ptr{FreeType.__JL_FT_FaceRec_} @0x0000016f654688b0.

jaakkor2 commented 6 months ago

Problem is more in FreeType.jl and underlying FreeType library

Some discussion here https://stackoverflow.com/questions/10075032/can-freetype-functions-accept-unicode-filenames