Om texterna:
Det finns två textlager med samma texter i, ett punktlager (tx_riks) och ett linjelager (tl_riks). Punktlagret är rätt meningslöst, om man använder det så kan man inte få kurvade texter som t.ex. följer åar eller bergsryggar.
I linjelagret så har varje text en kurva (oftast en rak horisontell linje, men ibland en böjd kurva) som det är meningen att texten ska visas längs. Problemet är att de olika texterna ska ha olika storlekar beroende på deras kategori (angedd av KKOD-fältet), kurvan är exakt anpassad för att texten ska få plats på den när den har den storleken, och QGIS vägrar av någon anledning att visa texten om den inte får plats på kurvan - så det gäller att man hittar exakt rätt textstorlek för varje kategori. Jag har provat mig fram och hittat några som verkar fungera. Man behöver också använda rätt typsnitt, GSDText.ttf som följer med datapaketet med Översiktskartan.
Såhär ser mina textinställningar för tl_riks-lagret ut för tillfället (bifogad bild 1 och 2).
De inställningar som har en ruta med ett gult epsilon mot en gul bakgrund till höger om sig har en liten kodsnutt som bestämmer värdet på inställningen beroende på varje texts kategori. För 'Style' så ser koden ut såhär:
CASE
WHEN "KKOD" in (52, 53, 54, 55,
76,
82, 83, 84, 85, 86,
92, 93, 94, 98, 99) THEN 'Oblique'
ELSE 'Regular'
END
...vilket innebär att textstilen 'Oblique' (kursiv) används för de kategorier som representerar naturnamn (bäckar, sjöar, toppar, fjällområden) och 'Regular' används för alla andra. Tyvärr så verkar det inte finnas något separat fält i shapefilen som anger vilken stil, färg och storlek som ska användas så man måste lista alla kategorier på det här sättet.
Samma sak för storlek (i kartenheter, dvs meter, så att den skalas med kartan - annars skulle texterna kollidera med varandra när man zoomade ut):
CASE
WHEN "KKOD" IN (76) THEN 340
WHEN "KKOD" IN (1, 2, 10, 52, 61, 82, 92, 98) THEN 425
WHEN "KKOD" IN (3, 11, 41, 43, 53, 83, 93, 99) THEN 525
WHEN "KKOD" IN (42, 44, 54, 62, 84, 94) THEN 675
WHEN "KKOD" IN (45, 47) THEN 825
ELSE 500
END
Och färg (alla naturnamn som har med vatten att göra är blå, allt annat svart):
CASE
WHEN "KKOD" IN (82, 83, 84, 85, 86, 92, 93, 94) THEN '#0000FF'
ELSE '#000000'
END
Höjdangivelser för höjdkurvor finns i ett separat lager (ot_riks). Det är ett punktlager, men eftersom texterna är så korta så spelar det ingen roll - man behöver bara se till att varje text roteras enligt fältet TRIKT för att texten ska följa höjdkurvorna. Jag använder storleken 250 meter för dem och en 100 meter stor vit buffer runt texten för att den inte ska kollidera med sin höjdkurva.
Allt det här är som sagt ofullständigt. Om jag får det att se riktigt bra ut någon gång så kanske jag lägger upp QGIS-filen någonstans.