My goal is the following: I would like to show every street name/label, without overlapping (the scale I use is <20000, and it is changing).
The default label is curved, 8p, but if the software can't show an label (because of the street is too short in the actual scale), then the size of label of that street changes to 7p, or to 6p, depend on what is possible to display (I think it depends on the length of the street on the actual scale). If it is not possible at all to a label in curve, then it is labelled in parallel mode.
Simply:
If it is possible to show, Font size = 8p, Curved label
Else if it is possible to show, Font size = 7p, Curved Label
Else if it is possible to show, Font size = 6p, Curved Label
Else Font size = 6p, Parallel Label
How is it possible in QGIS?
I tried to solve the problem by rule-base labelling, but it does not give a perfect solution, just approximately solution (because it depends on the font style, etc.)
8p, curved, rule: $length /@map_scale *1000>= (length( "Name" )*1.6)
7p, curved, rule: ($length /@map_scale *1000< (length( "Name" )*1.6)) and ( $length /@map_scale *1000>= (length( "Name" )*1.3))
6p, curved, rule: ($length /@map_scale *1000< (length( "Name" )*1.3)) and ( $length /@map_scale *1000>= (length( "Name" )*1.0))
6p, paralel, rule: $length /@map_scale *1000< (length( "Name" )*1.0)