On 8/12/20 5:04 PM, Daniel wrote: > On 2020-08-12 22:39, Stephan Witt wrote: >> Am 12.08.2020 um 22:06 schrieb Daniel <xraco...@gmx.de>: >>> >>> On 2020-08-12 17:04, Richard Kimberly Heck wrote: >>>> On 8/12/20 7:43 AM, Daniel wrote: >>>>> Does anyone know how to get the QFont from a "Font const & font"? >>>>> I tried >>>>> >>>>> fi = font.fontInfo(); >>>>> >>>>> with >>>>> >>>>> 1. getFont(fi) >>>>> >>>>> and also >>>>> >>>>> 2. getFont(fi.realize(sane_font)) >>>>> >>>>> But always get a SIGSEGV within LyX. >>>> What exactly is the error with the latter? >>>> Riki >>> >>> I get the message below. I am still not ably to create a backtrace. >>> But the attached patch causes the issue for me when I open the text >>> properties dialog. Now, oddly enough only the first time I open it… >>> >> >> … this is the assertion for a non-realized font: >> >> (lldb) bt >> * thread #1, queue = 'com.apple.main-thread', stop reason = signal >> SIGABRT >> frame #0: 0x00007fff599df2c2 >> libsystem_kernel.dylib`__pthread_kill + 10 >> frame #1: 0x00000001059c580d >> libsystem_pthread.dylib`pthread_kill + 284 >> frame #2: 0x00007fff599496a6 libsystem_c.dylib`abort + 127 >> * frame #3: 0x000000010039218f LyX`lyx::lyx_exit(exit_code=1) at >> LyX.cpp:275:2 >> frame #4: 0x0000000100593dd7 >> LyX`boost::assertion_failed(expr="false", function="void >> lyx::doAssertWithCallstack(bool)", >> file="/Users/stephan/git/lyx/src/support/lassert.cpp", line=44) at >> boost.cpp:47:2 >> frame #5: 0x000000010106cc1b >> LyX`lyx::doAssertWithCallstack(value=false) at lassert.cpp:44:3 >> frame #6: 0x000000010106d3a2 LyX`lyx::doAssert(expr="false", >> file="/Users/stephan/git/lyx/src/frontends/qt/GuiFontLoader.cpp", >> line=132) at lassert.cpp:53:2 >> frame #7: 0x0000000100ce6f75 LyX`lyx::frontend::(anonymous >> namespace)::fontinfo(f=0x00007ffeefbf6178) at GuiFontLoader.cpp:132:9 >> frame #8: 0x0000000100ce7185 >> LyX`lyx::frontend::getFont(f=0x00007ffeefbf6178) at >> GuiFontLoader.cpp:469:9 >> frame #9: 0x0000000100bd172a >> LyX`lyx::frontend::GuiCharacter::paramsToDialog(this=0x000000011e12bef0, >> font=0x000000011e12c0c0) at GuiCharacter.cpp:616:16 >> frame #10: 0x0000000100bd4655 >> LyX`lyx::frontend::GuiCharacter::initialiseParams(this=0x000000011e12bef0, >> (null)="") at GuiCharacter.cpp:675:2 >> frame #11: 0x0000000100b33db0 >> LyX`lyx::frontend::Dialog::showData(this=0x000000011e12bef0, data="") >> at Dialog.cpp:139:7 >> frame #12: 0x0000000100e9d971 >> LyX`lyx::frontend::GuiView::doShowDialog(this=0x000000011b965eb0, >> qname=0x00007ffeefbf6538, qdata=0x00007ffeefbf6530, >> inset=0x0000000000000000) at GuiView.cpp:4852:12 >> frame #13: 0x0000000100e9e0e3 >> LyX`lyx::frontend::GuiView::qt_static_metacall(_o=0x000000011b965eb0, >> _c=InvokeMetaMethod, _id=16, _a=0x00007ffeefbf64d0) at >> moc_GuiView.cpp:172:22 >> frame #14: 0x000000010553363a >> QtCore`QMetaObject::activate(QObject*, int, int, void**) + 2298 >> frame #15: 0x0000000100e9d835 >> LyX`lyx::frontend::GuiView::triggerShowDialog(this=0x000000011b965eb0, >> _t1=0x00007ffeefbf6538, _t2=0x00007ffeefbf6530, >> _t3=0x0000000000000000) at moc_GuiView.cpp:259:5 >> frame #16: 0x0000000100e9d777 >> LyX`lyx::frontend::GuiView::showDialog(this=0x000000011b965eb0, >> name="character", sdata="", inset=0x0000000000000000) at >> GuiView.cpp:4834:2 >> frame #17: 0x0000000100e93c29 >> LyX`lyx::frontend::GuiView::dispatch(this=0x000000011b965eb0, >> cmd=0x000000011ba08ac8, dr=0x00007ffeefbf9fd0) at GuiView.cpp:4412:5 >> frame #18: 0x0000000100b74135 >> LyX`lyx::frontend::GuiApplication::dispatch(this=0x0000000106a13930, >> cmd=0x000000011ba08ac8, dr=0x00007ffeefbf9fd0) at >> GuiApplication.cpp:2094:19 >> frame #19: 0x0000000100b6dd5d >> LyX`lyx::frontend::GuiApplication::dispatch(this=0x0000000106a13930, >> cmd=0x000000011ba08ac8) at GuiApplication.cpp:1409:3 >> >> The value of f in frame #7 is: >> >> (lldb) print f >> (const lyx::FontInfo) $0 = { >> family_ = IGNORE_FAMILY >> series_ = IGNORE_SERIES >> shape_ = IGNORE_SHAPE >> size_ = IGNORE_SIZE >> style_ = IGNORE_STYLE >> color_ = Color_ignore >> background_ = Color_ignore >> paint_color_ = (baseColor = Color_none, mergeColor = Color_ignore) >> emph_ = FONT_OFF >> underbar_ = FONT_IGNORE >> strikeout_ = FONT_IGNORE >> xout_ = FONT_IGNORE >> uuline_ = FONT_IGNORE >> uwave_ = FONT_IGNORE >> noun_ = FONT_OFF >> number_ = FONT_IGNORE >> nospellcheck_ = FONT_OFF >> } >> >> Stephan > > I don't know the solution to the problem. I thought > .realize(sane_font) is supposed to avoid that...
The problem, I think, is that the font has IGNORE lots of things in it. FontInfo::realize does nothing with those but only with INHERIT. The IGNORE stuff is perfectly valid here. What are you trying to accomplish? Riki -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel