Bibliography according to icelandic system
You could treat the names of Icelanders as "corporate authors", by encasing their names in pairs of curly braces. That way "{Arnar Vigfusson}"
and "{Sigridur Benediktsdottir}"
-- {{Arnar Vigfusson}}
and {{Sigridur Benediktsdottir}}
would work too, of course -- will get sorted under "A" and "S", respectively, rather than under "V" and "B". Moreover, no comma will be inserted between the given name and the patronymic.
Using biblatex 3.3 and biber 2.4 (currently in development folders on Sourceforge), you can customise the sorting keys used to sort names and you can do this at various scopes. One way of tackling your problem is:
\begin{filecontents}{\jobname.bib}
@BOOK{test1,
OPTIONS = {sortnamekeyscheme=givenfirst},
AUTHOR = {Arnar Vigfusson},
TITLE = {One},
DATE = {1983}
}
@BOOK{test2,
OPTIONS = {sortnamekeyscheme=givenfirst},
AUTHOR = {Sigridur Benediktsdottir},
TITLE = {Two},
DATE = {1983}
}
@BOOK{test3,
AUTHOR = {Brian Yellow},
TITLE = {Three},
DATE = {1983}
}
\end{filecontents}
\documentclass{article}
\usepackage{fontspec}
\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSortingNamekeyScheme[givenfirst]{
\keypart{
\namepart{given}
}
\keypart{
\namepart{family}
}
}
\begin{document}
\textcite{test1,test2,test3}
\printbibliography
\end{document}
Here you can see that the new command \DeclareSortingNameScheme
is used to define a new named scheme for constructing name sorting keys. This can be referred to at several scopes - globally (default), as part of a reference context, as a per-entry option (as in this example) or, with BibLaTeXML data sources, you can even do this at per name-list or per-name scope so that you can mix Icelandic and non-Icelandic names in the same entry:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bltxml}
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="test7.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<!-- Auto-generated by Biber::Output::biblatexml -->
<bltx:entries xmlns:bltx="http://biblatex-biber.sourceforge.net/biblatexml">
<bltx:entry id="test1" entrytype="book">
<bltx:names type="author">
<bltx:name sortnamekeyscheme="givenfirst">
<bltx:namepart type="family" initial="V">Vigfusson</bltx:namepart>
<bltx:namepart type="given" initial="A">Arnar</bltx:namepart>
</bltx:name>
</bltx:names>
<bltx:title>One</bltx:title>
<bltx:date>1983</bltx:date>
</bltx:entry>
<bltx:entry id="test2" entrytype="book">
<bltx:names type="author" sortnamekeyscheme="givenfirst">
<bltx:name>
<bltx:namepart type="family" initial="B">Benediktsdottir</bltx:namepart>
<bltx:namepart type="given" initial="S">Sigridur</bltx:namepart>
</bltx:name>
</bltx:names>
<bltx:title>Two</bltx:title>
<bltx:date>1983</bltx:date>
</bltx:entry>
<bltx:entry id="test3" entrytype="book">
<bltx:names type="author">
<bltx:name>
<bltx:namepart type="family" initial="Y">Yellow</bltx:namepart>
<bltx:namepart type="given" initial="B">Brian</bltx:namepart>
</bltx:name>
</bltx:names>
<bltx:title>Three</bltx:title>
<bltx:date>1983</bltx:date>
</bltx:entry>
</bltx:entries>
\end{filecontents*}
\usepackage{fontspec}
\usepackage[style=authoryear]{biblatex}
\addbibresource[datatype=biblatexml]{\jobname.bltxml}
\DeclareSortingNamekeyScheme[givenfirst]{
\keypart{
\namepart{given}
}
\keypart{
\namepart{family}
}
}
\DeclareNameFormat{author}{%
\nameparts{#1}%
\ifsortnamekeyscheme{givenfirst}
{\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}
{\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\begin{document}
\textcite{test1,test2,test3}
\printbibliography
\end{document}
There is a new test \ifsortnamekeyscheme
which you can use to detect which scheme was used for a particular name. You can insert literals (like spaces, commas) into the name key scheme and also have compound name parts etc. I am looking into implementing more generic name handling for things like patronymics etc.
The name parts system in biblatex 3.3/biber 2.4 has been significantly changed and it is now possible, using a modern datasource like biblatexml, to define and use arbitrary name parts like "patronymic" etc. See the DEV branch biblatex PDF documentation for a complete example.