From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id IOfVNo9/emcH9gAAe85BDQ:P1 (envelope-from ) for ; Sun, 05 Jan 2025 12:48:16 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id IOfVNo9/emcH9gAAe85BDQ (envelope-from ) for ; Sun, 05 Jan 2025 13:48:16 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=marekpasnikowski.pl header.s=dkim header.b=hZNhF6mf; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=reject) header.from=marekpasnikowski.pl ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1736081295; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=g5U7aWTGSPJmUNtS8Wj70mFrbaMot2whbTbNfLXe0Zo=; b=uRi8Z4eUhf0kTlD88N8FCk3npDQW5V/ldJBZzo/Q8+EY5d0MZdr6Cnw/DW8MnuT2Jz4Dt2 VSDC56EVRW3PH7FeAm+25rnAUgcf9QG7cKrFyCI3aUpNZ6qvRZS3t+9hHi/N+/Ex6Aknn8 xj4wC060ZM1d4rKyDq/rbGjBjuH85ufbCEzoQ6mPahVC/n2ZdLTGWsM8ortsPOlv3Gjh9s gsFstwwVTgonIT5sYDXG/FLB5NPuP+N85oKjlGXvR/tZJU0yw902InvkCKKuJsLNjlCVrH 7zt3SEPsRi6jci5an0uCZGw17VaUCb4FMxRGT+XyTBd1A4hUtfFiCVSzxYJHzQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=marekpasnikowski.pl header.s=dkim header.b=hZNhF6mf; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=reject) header.from=marekpasnikowski.pl ARC-Seal: i=1; s=key1; d=yhetil.org; t=1736081295; a=rsa-sha256; cv=none; b=EL7Dl/vcgl/eH+KMQ36KuSwkkDZLzbEA4i/BBS1aXwHTSVExjwZeGULgjF5Z8lzRq6aSBZ Dv8zuHbjzIXFFhN1pG/3Q8GeStAs5zmuQMPmoCouAuC8ckfd3PLmgXEJBMDvVUTU3jLM1j xUa0zxiZ+GUw9wgFqBCCinVC/i13jNBGk58mPU6pu6JIuxxL3TRkamHSdXgMmk9cdB5aY1 gE8dLyqWULriFc2GjHAb2yw2eB4aPCuRJajlNz+JVfeFtjBdHcCclItq7b/ztxS1NBXshX uCbTP+eGxn2odx5U1KFQ4O658sHYBFi6WnZG2rBt6AHnz/9IH1mLUxDQ49cZIA== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 4CEE46158 for ; Sun, 05 Jan 2025 13:48:15 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tUPex-0002xl-O2; Sun, 05 Jan 2025 07:23:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tUPev-0002xL-Lv for help-guix@gnu.org; Sun, 05 Jan 2025 07:23:09 -0500 Received: from [81.190.248.246] (helo=marekpasnikowski.pl) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tUPes-0002so-Oy for help-guix@gnu.org; Sun, 05 Jan 2025 07:23:09 -0500 Received: from localhost (localhost.local [127.0.0.1]) by localhost (OpenSMTPD) with ESMTP id d9784af4; Sun, 5 Jan 2025 12:22:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=marekpasnikowski.pl; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=dkim; bh=l56vtrI01VZtoX5NDIyXi1RZj DXQCns3MuBQr01KRpI=; b=hZNhF6mfICDk5W6dsl6zcFbZy/Vz+OokWUUqU3q6g czrYMkZ3S9W/p4HnwxWjatH0XNe3orpsWz/88qqj1lgMT5Dr9qY+Ch5kOkNFdfIO JRlK/H44GoM8ynxkYq03sDPDeYN4rQwIvQkL6Aoda4EL0N2og/VOIb+O6Xrt1p1t X1crrCOc8g5RkE+8lil/fxYzBIWl0qxg/rzmtxnDxVXo5rCxH950DlTpAeqSHYng 6Q2dnqiOflGIHMlqLJgDv/3oQoSPzvieVx7vvQEPJKw0PdVFsOy7vfqQs9MytLPd yTADiA3HWt71PPWoIQt6ne6gOhVZQNA+UuAQPe0MSuvnA== Received: by localhost (OpenSMTPD) with ESMTPSA id d957466c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Sun, 5 Jan 2025 12:22:40 +0000 (UTC) From: Marek =?utf-8?B?UGHFm25pa293c2tp?= To: help-guix@gnu.org Cc: Simen =?ISO-8859-1?Q?Endsj=F8?= Subject: Re: Different/incorrect font chosen -- fontconfig not deterministic? Date: Sun, 05 Jan 2025 13:22:33 +0100 Message-ID: <115751143.nniJfEyVGO@aisaka> In-Reply-To: <87o70lslhb.fsf@simendsjo.me> References: <87o70lslhb.fsf@simendsjo.me> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart2499713.jE0xQCEvom"; micalg="pgp-sha256"; protocol="application/pgp-signature" X-Host-Lookup-Failed: Reverse DNS lookup failed for 81.190.248.246 (failed) Received-SPF: pass client-ip=81.190.248.246; envelope-from=marek@marekpasnikowski.pl; helo=marekpasnikowski.pl X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, RDNS_NONE=0.793, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_DBL_SPAM=2.5 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: help-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Scanner: mx12.migadu.com X-Migadu-Spam-Score: 2.50 X-Spam-Score: 2.50 X-Migadu-Queue-Id: 4CEE46158 X-TUID: 6LYNyN4J0ax/ --nextPart2499713.jE0xQCEvom Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8"; protected-headers="v1" From: Marek =?utf-8?B?UGHFm25pa293c2tp?= To: help-guix@gnu.org Cc: Simen =?ISO-8859-1?Q?Endsj=F8?= Date: Sun, 05 Jan 2025 13:22:33 +0100 Message-ID: <115751143.nniJfEyVGO@aisaka> In-Reply-To: <87o70lslhb.fsf@simendsjo.me> References: <87o70lslhb.fsf@simendsjo.me> MIME-Version: 1.0 Good morning Simen. I am also offended by the incomprehensible documentation of Fontconfig on=20 their own website. For the goal learning more about this crucial library, = I=20 would like to help explore your problem. =46rom your message, I have clearly understood that your Fontconfig=20 configuration has some variable which you fail to find, despite very simila= r=20 system configuration declarations. Unfortunately, you provided neither the= =20 relevant sections of the system configurations, nor the fontconfig=20 configuration files. I will use the concept of functional impurity. In this instance, I mean by= =20 this that Guix is vulnerable to initial data in storage regardless of its=20 promise of pure reproducibility of build. The important factor to consider= is=20 that Guix promises only to reproduce builds of program binaries, and not=20 everything that programs could ever utilise to change operational logic. Sunday, 5 January 2025 09:39:28 CET Simen Endsj=C3=B8 wrote: > I=E2=80=99m having problems where the wrong/different font is chosen on o= ne > computer even though my setup should be the same. >=20 > On my first system, Material Icons font is chosen, but on the second > system, Symbols Nerd Font and GNU Unifont is chosen. >=20 > I copied my old operating-system configuration and only did minor tweaks > to support the new system (e.g. change hostname), but the font setup is > the same. I also use the exact same home-environment and the same emacs > configuration. >=20 > Material Icons is added by emacs `all-the-icons-install-fonts' and added > to `~/.local/share/fonts/material-design-icons.ttf'. This file exist on > both systems. fc-list shows this font too. >=20 > So I=E2=80=99m guessing fontconfig is not deterministic in some way here. > `fc-cache -fr' doesn=E2=80=99t help, and I=E2=80=99ve tried rebuilding th= e system, home > and rebooted too. >=20 There is also a possibility, that default Fontconfig settings had changed=20 between the two system installations. Or you had some pre-existing user=20 configuration on one of the systems which introduced impurity to the system= =20 installation. There are three configuration spaces needing alignment here: 1. what you want to see; 2. what you request the system to build; 3. what impurity differences exist between the computers. You have only roughly described the space number one. On its own it is=20 completely useless, because there is no way to tell why the problem manifes= ts=20 and what to change. Sunday, 5 January 2025 09:39:28 CET Simen Endsj=C3=B8 wrote: > Char 1 (=EE=A2=B8) shows a different icon than intended as Nerd and Mater= ial > uses different symbols for the character. >=20 > First system - correct: > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 > =E2=94=82 position: 57 of 1659 (3%), column: 0 > =E2=94=82 character: =EE=A2=B8 (displayed as =EE=A2=B8) (code= point 59576, #o164270, > #xe8b8) =E2=94=82 charset: unicode-bmp (Unicode Basic Multi= lingual > Plane (U+0000..U+FFFF)) =E2=94=82 code point in charset: 0xE8B8 > =E2=94=82 syntax: w which means: word > =E2=94=82 category: L:Strong L2R > =E2=94=82 to input: type "C-x 8 RET e8b8" > =E2=94=82 buffer code: #xEE #xA2 #xB8 > =E2=94=82 file code: #xEE #xA2 #xB8 (encoded by coding system > utf-8-unix) =E2=94=82 display: by this font (glyph code): > =E2=94=82 ftcrhb:-unknown-Material > Icons-regular-normal-normal-*-24-*-*-*-m-0-iso10646-1 (#x34A) =E2=94=82 > =E2=94=82 Character code properties: customize what to show > =E2=94=82 general-category: Co (Other, Private Use) > =E2=94=82 decomposition: (59576) ('=EE=A2=B8') > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 >=20 > Second system - incorrect/different: > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 > =E2=94=82 position: 50 of 53 (92%), column: 0 > =E2=94=82 character: =EE=A2=B8 (displayed as =EE=A2=B8) (code= point 59576, #o164270, > #xe8b8) =E2=94=82 charset: unicode-bmp (Unicode Basic Multi= lingual > Plane (U+0000..U+FFFF)) =E2=94=82 code point in charset: 0xE8B8 > =E2=94=82 syntax: w which means: word > =E2=94=82 category: L:Strong L2R > =E2=94=82 to input: type "C-x 8 RET e8b8" > =E2=94=82 buffer code: #xEE #xA2 #xB8 > =E2=94=82 file code: #xEE #xA2 #xB8 (encoded by coding system > utf-8-unix) =E2=94=82 display: by this font (glyph code): > =E2=94=82 ftcrhb:-PfEd-Symbols Nerd Font > Mono-regular-normal-normal-*-24-*-*-*-m-0-iso10646-1 (#x448) =E2=94=82 > =E2=94=82 Character code properties: customize what to show > =E2=94=82 general-category: Co (Other, Private Use) > =E2=94=82 decomposition: (59576) ('=EE=A2=B8') > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 >=20 > Char 2 (=EE=97=99) choose a font which doesn=E2=80=99t have this characte= r at all, so it > renders as E5 D9. >=20 > First system =E2=80=93 correct: > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 > =E2=94=82 position: 1649 of 2449 (67%), column: 0 > =E2=94=82 character: =EE=97=99 (displayed as =EE=97=99) (code= point 58841, #o162731, > #xe5d9) =E2=94=82 charset: unicode-bmp (Unicode Basic Multi= lingual > Plane (U+0000..U+FFFF)) =E2=94=82 code point in charset: 0xE5D9 > =E2=94=82 syntax: w which means: word > =E2=94=82 category: L:Strong L2R, j:Japanese > =E2=94=82 to input: type "C-x 8 RET e5d9" > =E2=94=82 buffer code: #xEE #x97 #x99 > =E2=94=82 file code: #xEE #x97 #x99 (encoded by coding system > utf-8-unix) =E2=94=82 display: by this font (glyph code): > =E2=94=82 ftcrhb:-unknown-Material > Icons-regular-normal-normal-*-24-*-*-*-m-0-iso10646-1 (#x27D) =E2=94=82 > =E2=94=82 Character code properties: customize what to show > =E2=94=82 general-category: Co (Other, Private Use) > =E2=94=82 decomposition: (58841) ('=EE=97=99') > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 >=20 > Second system =E2=80=93 incorrect font chosen: > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 > =E2=94=82 position: 859 of 891 (96%), column: 0 > =E2=94=82 character: =EE=97=99 (displayed as =EE=97=99) (code= point 58841, #o162731, > #xe5d9) =E2=94=82 charset: unicode-bmp (Unicode Basic Multi= lingual > Plane (U+0000..U+FFFF)) =E2=94=82 code point in charset: 0xE5D9 > =E2=94=82 syntax: w which means: word > =E2=94=82 category: L:Strong L2R, j:Japanese > =E2=94=82 to input: type "C-x 8 RET e5d9" > =E2=94=82 buffer code: #xEE #x97 #x99 > =E2=94=82 file code: #xEE #x97 #x99 (encoded by coding system > utf-8-unix) =E2=94=82 display: by this font (glyph code): > =E2=94=82 ftcrhb:-GNU -Unifont > Sample-regular-normal-normal-*-24-*-*-*-d-0-iso10646-1 (#xDDD8) =E2=94=82 > =E2=94=82 Character code properties: customize what to show > =E2=94=82 general-category: Co (Other, Private Use) > =E2=94=82 decomposition: (58841) ('=EE=97=99') > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 >=20 > The fonts in fc-list lists the fonts in different order on the two > systems, which is probably the reason why it picks different fonts on > the two systems, but it doesn=E2=80=99t explain why it picks a font which > doesn=E2=80=99t have the symbol=E2=80=A6? >=20 > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 > =E2=94=82 fc-list | grep -i material > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 >=20 > First (correct) system: > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 > =E2=94=82 ~/.local/share/fonts/material-design-icons.ttf: Material > Icons:style=3DRegular =E2=94=82 > ~/.guix-home/profile/share/fonts/web/MaterialIcons-Regular.woff: Material > Icons:style=3DRegular =E2=94=82 > ~/.guix-home/profile/share/fonts/truetype/MaterialIcons-Regular.ttf: > Material Icons:style=3DRegular =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 >=20 > Second (incorrect) system: > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 > =E2=94=82 ~/.guix-home/profile/share/fonts/web/MaterialIcons-Regular.woff= : Material > Icons:style=3DRegular =E2=94=82 ~/.local/share/fonts/material-design-icon= s.ttf: > Material Icons:style=3DRegular =E2=94=82 > ~/.guix-home/profile/share/fonts/truetype/MaterialIcons-Regular.ttf: > Material Icons:style=3DRegular =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 >=20 I appreciate that you took your time to prove that you have this problem. = I=20 am afraid though that this information alonw will not bring any results. =20 =46ontconfig uses a complicated formula to sort the fonts for display, maki= ng it=20 impossible to reverse engineer the problem source from the output. Sunday, 5 January 2025 09:39:28 CET Simen Endsj=C3=B8 wrote: > What is the correct way to make the systems deterministic? And only > choose a font which has symbols defined? And choose the preferred fonts > in different situations? The only way to truly ensure deterministc behaviour of Fontconfig is to bui= ld=20 both systems from scratch on storage without any font configuration files, = and=20 introduce any configuration changes solely through the Guix configuration=20 system. This strategy has a very high cost of implementation, as it requir= es=20 the complicated process of backing up data, removing existing systems and t= hen=20 reconstructing everything. The next best strategy is to remove all existing Fontconfig configuration=20 files and reconfigure everything to prevent impurities related to pre-exist= ing=20 files. It is relatively cheap to implement, but it does not guarantee puri= ty,=20 as there are many places where font configuration adjustment can take place= =2E =20 If you do not find them all, you will not achieve determinism. =46or further inspiration, take a look at my Fontconfig configuration: https://git.marekpasnikowski.pl/distribution.git/tree/suweren/home/services/ fontutils.scm I am running out of time to figure out how to prevent the link from being=20 wrapped to a newline, so please bear with it. If you send system or home configuration snippets relating to font=20 configuration and the resulting Fontconfig configuration files, I might be= =20 able to provide better commentary on the problem at hand. =2D---- Guix Help Member, Marek Pa=C5=9Bnikowski --nextPart2499713.jE0xQCEvom Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part. Content-Transfer-Encoding: 7Bit -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEWQ5QD+OdJrPmC3Q7bYGxIHcRiZ8FAmd6eYkACgkQbYGxIHcR iZ/r/g//fcD7qQlo0rHWsbSVVyIJSBtAztazAWYQF5MnNLUHzYl83dWg3M5xJQV2 wXlkp7uKPMOloAI6IUtpgnY47m3SfUbrkUl9MexCDOECKKJRv6hGb5tDADwM+/Ee yYaTAMqSh65AwBvnSeEUWQWFAkotFT8R8OU5qBbZHSUNKRUrPHahpNO2BMvCLVT1 q5Ems0aqmxgxwBUi+q8l+03HrRa1bwlU+4GfV4e4Y2Bs0zNFqQqh7QDDa4JLsWfV Ez/eKd/cajJsv2UbXwvZ+doof9XRBGE3t5ty4yRVw5Exbaees3HqfzL2V/4dwckr zO3oNDQ7Y8nTt9e0EecDsPV2AjVKkqK04d3oUlVf27cSOdopVvrFTUHUyDNXGvW0 6wi2TtNVLGwW4AneanA9wLdxZO1sAmyLnoJP7lzKfassAh4moCinKgpG5wMtH1R8 W8PmDW6hPq3gLHbbo9yJSqrfshDA9ghf+LrJ3n+2tUSOhLQWPAC1smgWNnO0tQ+d 2wZRg5A9LQjDUYjtHtgJjTPyCe40fFQ5LFqEerVz2SELexJOuM+2BnuaI9TcL8zp owsNbbXNytfhqyjC4pvjwYC0x5/i+ALv/20QJKWoRqkTQyHZ/Fk7Mv+tYtuogQ6C AMeeMUXcvYyQX0un+2HXReg+28MiYa76CoN8V7eWcrybHH/uh9k= =sRv0 -----END PGP SIGNATURE----- --nextPart2499713.jE0xQCEvom--