Mostra Scambio - Pen Show - di Firenze
17 maggio 2025 - Hotel AC Marriot, via Luciano Bausi, 5

Autoproduzione falsarighe con metapost (per programmatori)

Stili, strumenti e iniziative per migliorare la propria scrittura.
Rispondi
Avatar utente
Crononauta
Levetta
Levetta
Messaggi: 506
Iscritto il: martedì 8 gennaio 2013, 16:16
La mia penna preferita: Aurora 98 millerighe oro
Il mio inchiostro preferito: Pelikan 4001 Blu-Nero
Misura preferita del pennino: Medio
Fp.it ℵ: 079
Località: Ravenna
Gender:
Contatta:

Autoproduzione falsarighe con metapost (per programmatori)

Messaggio da Crononauta »

Un saluto a tutti, è un po' che non mi faccio sentire ma gli impegni sono tanti. Eppoi adesso mi sto limitando a fare esercizio col Palmer (ho completato la trascrizione del secondo libro del "de Bello Gallico" di Giulio Cesare, che sto approfittando per leggere tipo racconto di avventure! Niente di nuovo, insomma).

Nel mentre, ho trovato un linguaggio di programmazione text-oriented, della famiglia dei vari tex e latex, chiamato "metapost", che permette di stampare con estrema facilità dei fogli con righe e margini, tipo quaderno. Il compilatore è liberamente disponibile sulle varie distribuzioni di Linux, non so però se c'è qualcosa di analogo per Windows.

Venendo al sodo, si scrive con un normale editor di test un sorgente, estremamente semplice ed intuitivo:

Codice: Seleziona tutto

outputtemplate := "%j.mps";

% Foglio con righe guida per metodo Palmer
beginfig(1)

	% Pagina A4
	pagewidth  := 210mm;
	pageheight := 297mm;

	% h1 = riga sopra/sotto; h2 = riga del testo; hs = margine superiore;
	% hi = margine inferiore.
	h1 := 4mm;
	h2 := 3mm;
	hs := 27.5mm; % 1"
	hi := 13.75mm; % 1/2"

	% posizione dei margini verticali
	x1 := 10mm;
	x2 := pagewidth - x1; % simmetrico


	% funzione di disegno riga verticale
	def vline(expr x, sp, col) =
		draw (x, -0-sp/2) -- (x, -pageheight+sp/2)
			withpen pencircle scaled sp
			withcolor col;
	enddef;

	% funzione di disegno riga orizzontale
	def hline(expr y, sp, col) =
		draw (0+sp/2, y) -- (pagewidth-sp/2, y)
			withpen pencircle scaled sp
			withcolor col;
	enddef;

	% funzione che compone i "blocchi" delle righe, formati dalla riga superiore di
	% riferimento, da quella di base (più grossa), e da quella "inferiore" che delimita
	% le gambe discendenti (e, incidentalmente, forma il limite per le ascendenti
	% successive: volendo staccare i blocchi, occorrerebbe una riga in più).
	def row (expr y) =
		hline (y-h1, 0.36pt, 0.5white);
		hline (y-h1-h2, 0.56pt, 0.0white); % piu' grossa e scura la linea di base
		hline (y-2*h1-h2, 0.36pt, 0.5white);
	enddef;

	% Inizio il disegno effettivo.
	
	% Margini:
	vline (x1, 0.32pt, 0.8red);
	vline (x2, 0.32pt, 0.8red);

	% Prima riga orizzontale:
	hline (-hs, 0.28pt, 0.7white);

	% Le altre righe orizzontali, raggruppate nei "blocchi" generati dalla funzione "row".
	for i:=0 upto 22:
		row (-hs-i*(2*h1+h2));
	endfor;

endfig;

end

Ecco tutto, sembra complicato ma per chi ha un minimo di dimestichezza con la programmazione è sicuramente intuitivo (ci ho messo poche decine di minuti a prendere un esempio fatto per simulare il layout delle righe dei quaderni di seconda elementare, e rivederlo per farmi un layout con gli spazi per il Palmer).
Una volta creato il sorgente, lo si salva con estensione ".mp", per esempio "falsariga_palmer.mp"; da questo, si può generare direttamente un PDF col comando "mptopdf" (più nome file).
Il risultato è il seguente (il forum impedisce di postare dei PDF, ne faccio un sample in jpg):
Esempio Falsariga Palmer in metapost
Esempio Falsariga Palmer in metapost
falsariga_sample.jpg (101.1 KiB) Visto 1498 volte
In questo modo si possono creare delle falserighe "personalizzate" per ogni esigenza si voglia, senza sottostare ai limiti dei generatori che si trovano "online": utili, ma spesso limitati.
Massimo Bacilieri
Omas Extra 620, Pelikan M250, Aleph n.79, Aurora... troppe
Avatar utente
Irishtales
Moderatrice
Moderatrice
Messaggi: 9499
Iscritto il: lunedì 5 novembre 2012, 18:34
La mia penna preferita: Wahl-Eversharp Doric
Il mio inchiostro preferito: Levenger - Forest
Misura preferita del pennino: Flessibile
FountainPen.it 500 Forum n.: 087
Arte Italiana FP.IT M: 044
Fp.it ℵ: 011
Fp.it 霊気: 018
Fp.it Vera: 033
Gender:

Autoproduzione falsarighe con metapost (per programmatori)

Messaggio da Irishtales »

Grazie Massimo, molto utile e interessante! :thumbup:
E' possibile aggiungere anche le linee oblique per facilitare la tracciatura delle ascendenti e discendenti inclinate, nelle falsarighe adatte ai corsivi?
"Scrittura e pittura sono le due estremità della stessa arte e la loro realizzazione è identica" - Aforisma di Shitao
Daniela
Avatar utente
piccardi
Fp.it Admin
Fp.it Admin
Messaggi: 15975
Iscritto il: domenica 23 novembre 2008, 18:17
La mia penna preferita: Troppe...
Misura preferita del pennino: Extra Fine
FountainPen.it 500 Forum n.: 001
Arte Italiana FP.IT M: 001
Fp.it ℵ: 001
Fp.it 霊気: 001
Località: Firenze
Contatta:

Autoproduzione falsarighe con metapost (per programmatori)

Messaggio da piccardi »

Irishtales ha scritto:Grazie Massimo, molto utile e interessante! :thumbup:
E' possibile aggiungere anche le linee oblique per facilitare la tracciatura delle ascendenti e discendenti inclinate, nelle falsarighe adatte ai corsivi?
Il metapost lo ha inventato quel genio spaventoso di Donald Knuth per crearsi i font che gli servivano, come si era inventato il TeX per scrivere i suoi libri. Il tutto nel 1978... quando word non esisteva neanche.

Il TeX l'ho usato per la tesi di laurea, da allora sono passato al LaTeX per tutto quello che supera le due pagine di testo, ma il metapost, purtroppo, non l'ho mai preso in mano. E lo rimpiango un po' perché è nei confronti del disegno vettoriale quello che è il LaTeX nei confronti di un processore di testi.

Il tutto per dire che si può fare senz'altro, ci si può fare qualunque cosa... Il problema di questi programmi è che richiedono un po' di investimento iniziale per imparare ad usarli visto che seguono un approccio da programmatore. In genere lo sforzo si ripaga in breve tempo, ma nell'ottica di oggi del fare tutto e subito e nella maniera possibilmente più stupida possibile, richiedere di usare il cervello ha poco fascino...

Per cui un bel grazie a Massimo per averci regalato il frutto delle sue ricerche.

Simone
Questo è un forum in italiano, per pietà evitiamo certi obbrobri linguistici:
viewtopic.php?f=19&t=3123
e per aiutare chi non trova un termine:
viewtopic.php?f=19&t=1758
Avatar utente
Crononauta
Levetta
Levetta
Messaggi: 506
Iscritto il: martedì 8 gennaio 2013, 16:16
La mia penna preferita: Aurora 98 millerighe oro
Il mio inchiostro preferito: Pelikan 4001 Blu-Nero
Misura preferita del pennino: Medio
Fp.it ℵ: 079
Località: Ravenna
Gender:
Contatta:

Autoproduzione falsarighe con metapost (per programmatori)

Messaggio da Crononauta »

Irishtales ha scritto:Grazie Massimo, molto utile e interessante! :thumbup:
E' possibile aggiungere anche le linee oblique per facilitare la tracciatura delle ascendenti e discendenti inclinate, nelle falsarighe adatte ai corsivi?
Dunque... sì, è possibile, piuttosto facilmente o quasi. Facilmente perché basta aggiungere alla funzione "draw" la direttiva rotated, cioè aggiungo una funzione per il disegno delle linee diagonali e poi la richiamo a ciclo 5 o 6 volte, quante ce ne stanno nella pagina (non l'ho parametrizzata molto, per adesso l'ho fatta alla brutta):

Codice: Seleziona tutto

	% funzione di disegno righe diagonali. L'angolo lo inverto poiche' lo intendo
	% con le righe inclinate "in avanti" nel senso di scrittura.
	def dline(expr x, ang) =
		draw (x, -hs) -- (x, -pageheight+35mm) rotated (360-ang)
			withpen pencircle scaled -0.28pt % qui fisso
			withcolor 0.5white; % qui fisso
	enddef;
il "quasi" invece è perché così c'è un problema, che è chiaro dall'immagine allegata:
Falsariga con diagonali che sbordano
Falsariga con diagonali che sbordano
falsariga_sample2.jpg (78.33 KiB) Visto 1445 volte
Così facendo creo semplicemente una linea verticale e poi la "ruoto" nel disegno di un valore arbitrario di gradi. Le righe però finiscono fuoriquadro, perché ogni diagonale dovrebbe invece avere una lunghezza diversa ad hoc. Perciò la cosa è meno banale del previsto, dovrò lavorare di trigonometria per calcolare i punti di intercetta coi bordi, e "fermare" le righe in quei punti. Ci studierò ;-)
Massimo Bacilieri
Omas Extra 620, Pelikan M250, Aleph n.79, Aurora... troppe
Avatar utente
Irishtales
Moderatrice
Moderatrice
Messaggi: 9499
Iscritto il: lunedì 5 novembre 2012, 18:34
La mia penna preferita: Wahl-Eversharp Doric
Il mio inchiostro preferito: Levenger - Forest
Misura preferita del pennino: Flessibile
FountainPen.it 500 Forum n.: 087
Arte Italiana FP.IT M: 044
Fp.it ℵ: 011
Fp.it 霊気: 018
Fp.it Vera: 033
Gender:

Autoproduzione falsarighe con metapost (per programmatori)

Messaggio da Irishtales »

Grazie Massimo, è perfetta anche così: le falsarighe si usano per gli esercizi, se le righe escono fuori dallo specchio non ha poi molta importanza ;)
Ottimo lavoro!! :clap:
"Scrittura e pittura sono le due estremità della stessa arte e la loro realizzazione è identica" - Aforisma di Shitao
Daniela
Rispondi

Torna a “Calligrafia”