gregorio-project / gregorio

The Gregorio Project
http://gregorio-project.github.io
Other
164 stars 43 forks source link

Line height adjustment is off when linebreak is in a clef change #1503

Open olivierberten opened 3 years ago

olivierberten commented 3 years ago

funnycustos

https://gregobase.selapa.net/chant.php?id=13362

rpspringuel commented 3 years ago

I think that the automatic eol custos should be suppressed in this instance as the clef-change custos already provides the necessary information. Is that what you'd want?

olivierberten commented 3 years ago

Well... I thought the custo was wrong but I just realize the actual bug is the whole second line is shifted down by half a line (except for the clef)... It's been fixed on Gregobase because the gabc code wasn't really optimal but it might be worth checking how this happened...

rpspringuel commented 3 years ago

the whole second line is shifted down by half a line (except for the clef)

Huh? Can you post a full MWE so that I can see this?

olivierberten commented 3 years ago
% !TEX TS-program = lualatex
% !TEX encoding = UTF-8

\documentclass[12pt]{article}
\usepackage{geometry}
\geometry{paperwidth=16cm,paperheight=20cm}
\usepackage{gregoriotex}
\usepackage{fullpage}

\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Linux Libertine O}

\pagestyle{empty}
\begin{document}

\gabcsnippet{(f3) be(gihh)rá(iv//hjIHhf/hih)ti(hv//hhh//hv//hhh) (,) su(f)mus.(f/hhhf/hhh/fgf) (z0)(::) <sp>V/</sp> 1.(c3) Ni(fe)si(ef) quod(fh) Dó(hhhhihivHGhhhf;hhhf/hhiv,hjIHhvGF)mi(f)nus(fhffe) (;) e(fhhhhhihi)rat(f) (;) in(fe~) no(ef)bis,(fhFE,f/hhh/fgFEfgffe) (:) di(bd)cat(dfe) nunc(ef) (;) }

\end{document}
olivierberten commented 3 years ago

In case it's of any use: it happens on the second pass.

rpspringuel commented 3 years ago

It's not the notes that are being pushed down, it's the staff lines (which include the clef) which are being pushed up (along with the lyrics on the line above, and all content on the line below). There must be an error in the automatic line height adjustment algorithm so that the notes are seeing the same vertical adjustment as everything else.

rpspringuel commented 3 years ago

Idea on what might be happening: The custos before the bar lines is the lowest element of the top staff and thus should be setting the line height settings. However, because it's part of a clef change, it's inside a discretionary which may be effecting the timing of its line height settings so that they are applying differently to the stafflines (and clef, both of which are inside the \localleftbox) and the notes (whose height adjustments are read in from the aux file, having been written there by the post_linebreak_filter on the previous pass).

fiat96 commented 3 years ago

This is fixable by replacing (z0)(::) <sp>V/</sp> 1.(c3) with (z0::c3) <sp>V/</sp> 1.. This is how the tutorial website indicates a clef change should be made, and has the additional benefit of allowing the V/-symbol to appear on the following line, where it truly belongs.

Placing the V/-symbol (or anything else) between the forced custos and the new clef seems to be causing of the issue.

https://gregobase.selapa.net/chant.php?id=13362 is now fixed.